我用 VC++ 生成了一个 *.dll。当我想使用它时,需要 *.lib。但我找不到它。如何获取 *.lib?谢谢。
问问题
261 次
3 回答
10
除非您另外指定,否则.lib
将在与.DLL
.
如果你得到的是一个 dll 而不是一个 lib,那么很有可能你实际上并没有从 dll 中导出任何东西。在这种情况下,链接器将创建 dll,但不会自动创建匹配的导入库。
于 2013-04-12T15:22:18.073 回答
2
这实际上取决于您的项目设置。
看看 *.vcprojx
并搜索类似的模式:
<link>
<ImportLibrary>.\Release/yourlibrary.lib</ImportLibrary>
</link>
于 2013-04-12T15:25:51.900 回答
1
通常,Visual Studio 将 .lib 放在 .dll 文件旁边。您的案例听起来根本不会生成 .lib。将库构建为 dll 时,如果要在另一个项目中链接到该库(而不是使用 dllopen 等),则必须指定应将哪些函数导出到库中。为此,您必须在构建库时为要导出的所有类或函数添加 __declspec(dllexport),并在链接时添加 __declspec(dllimport)。
你经常会发现一些像这样的宏:
#ifdef WIN32
#ifdef MYLIB_EXPORTS
#define MYLIBAPI __declspec(dllexport)
#else
#define MYLIBAPI __declspec(dllimport)
#endif
#else
#define MYLIBAPI
#endif
然后,在构建 lib 时,定义 MYLIB_EXPORTS 预处理器,以便它导出,同时链接它导入。您自己的代码可能看起来像这样
class MYLIBAPI MyClass
{
public:
void SomeFunction()
}
MYLIBAPI void SomeGlobalFunction();
现在,MyClass 和 SomeGLobalFunction 在构建时被导出,并出现在 lib 文件中。
于 2013-04-12T15:27:37.123 回答