动态库不生成使用Visual Studio 2012的lib文件2012
我使用Visual Studio 2012和我creared dll而不使用MFC,它生成的DLL。但是,当我使用指定下列选项生成特定目录下的库文件: - 去proeperties页面级 - >高级 - >导入库 ../../../lib/myapp.lib动态库不生成使用Visual Studio 2012的lib文件2012
它不是在指定的文件夹中生成lib文件。请帮帮我 。
感谢&问候 维卡斯
请参阅以下内容:你可能需要声明/出口(http://msdn.microsoft.com/en-us/library/7k30y2k5.aspx)
http://msdn.microsoft.com/en-us/library/67wc07b9.aspx请参阅 “备注”
只是解决了类似的问题。 Visual Studio不创建.lib文件,而不指示要在dll中公开哪些对象。您需要创建一个双赢的出口头是这样的:
#ifndef BLABLABLA
#define BLABLABLA
#ifdef MYAPPLIB_EXPORTS
#define MYAPPLIB_API __declspec(dllexport)
#elif defined(MYAPPLIB_EXPORTS_STATIC)
#define MYAPPLIB_API
#else
#define MYAPPLIB_API __declspec(dllimport)
#endif
#endif // !BLABLABLA
然后,你需要声明MYAPPLIB_EXPORTS作为预处理宏。包括在其他API头这个新的头文件,您要您的API中暴露每一个类或方法后,您可以添加MYAPPLIB_API自己的声明,如:
class MYAPPLIB_API MyClass{ ... };
calculatelibrary.h
/* 默认情况下, DLL的New Project模板将PROJECTNAME_EXPORTS添加到DLL项目的已定义的预处理器符号中。 在此示例中,CALCULATELIBRARY_EXPORTS是在您构建calculateLibrary DLL项目时定义的。 定义了CALCULATELIBRARY_EXPORTS符号时,CALCULATELIBRARY_API符号在此代码的成员函数声明中设置__declspec(dllexport)修饰符。 该修饰符告诉编译器和链接器从DLL中导出函数或变量,以便其他应用程序可以使用它。 当CALCULATELIBRARY_EXPORTS未定义时 - 例如,客户端应用程序包含头文件时 - CALCULATELIBRARY_API在成员函数声明中定义__declspec(dllimport)修饰符。该修饰符可以优化应用程序中函数的导入。欲了解更多信息
*/
#ifndef _calculate_library_h
#define _calculate_library_h
#ifdef CALCULATELIBRARY_EXPORTS
#define CALCULATELIBRARY_API _declspec(dllexport)
#else
#define CALCULATELIBRARY_API _declspec(dllimport)
#endif
namespace calculatelibrary
{
class CALCULATELIBRARY_API clsCalculateLibrary{
// Returns a + b
double Add(double a, double b);
};
}
#endif _calculate_library_h
// CalculateLibrary.cpp : Defines the exported functions for the DLL application.
//
#include "stdafx.h"
#include "CalculateLibrary.h"
namespace calculatelibrary
{
double clsCalculateLibrary::Add(double a, double b)
{
return a + b;
}
}