我正在使用 Visual Studio 2012,我在不使用 MFC 的情况下创建了 dll,它生成了 dll。但是当我指定使用以下选项在特定目录中生成一个 lib 文件时:- 转到 proeperties 页面->高级->导入库 ../../../lib/myapp.lib
它没有在指定文件夹中生成 lib 文件。请帮我 。
感谢和问候维卡斯
刚刚解决了一个类似的问题。Visual Studio 不会在不指示要在 dll 中公开哪些对象的情况下创建 .lib 文件。您需要像这样创建一个 win 导出标头:
#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 的新建项目模板将 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;
}
}
请参阅以下内容:您可能需要声明 /EXPORTS ( http://msdn.microsoft.com/en-us/library/7k30y2k5.aspx )