使用VC ++生成* .dll后* .lib在哪里?

时间:2013-04-12 15:15:50

标签: c++ dll

我用VC ++生成了一个* .dll。当我想使用它时,需要* .lib。但我找不到它。如何获得* .lib?感谢。

3 个答案:

答案 0 :(得分:10)

除非您另行指定,否则.lib将在与.DLL相同的目录中生成。

如果你得到一个dll而不是lib,那么很可能以某种方式或其他方式从dll中实际导出任何内容。在这种情况下,链接器将创建dll,但不会自动创建匹配的导入库。

答案 1 :(得分:2)

这实际上取决于您的项目设置。

看看* .vcprojx

并搜索类似的模式:

<link>
<ImportLibrary>.\Release/yourlibrary.lib</ImportLibrary>
</link>

答案 2 :(得分:1)

通常,Visual Studio会将.lib放在.dll文件旁边。 你的情况听起来根本就不会产生.lib。在将库构建为dll时,如果要在另一个项目中链接到该库(而不是使用dllopen等),则必须指定应将哪些函数导出到lib。为此,您必须在构建库时使用__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文件中。