首页 文章

如何在Visual C中构建导入库(.lib)和DLL?

提问于
浏览
60

我想有一个Visual Studio项目,它构建一个DLL文件和一个导入库(.lib)文件 . (导入库是一个静态链接库,负责在使用它的其他项目中加载该DLL文件) .

所以我去了Visual Studio C 2008 Express Edition,创建了类库类型的新项目,并将“配置类型”设置为“Dyanamic Library(.dll)” .

但是当我构建解决方案时,我看到的唯一相关输出文件是DLL文件;我没有看到生成任何LIB文件 . 我查看了项目目录和所有子目录(Release和Debug) .

我相信可以同时构建LIB和DLL文件,因为on the MSDN it says "The linker creates the import library when the DLL is built."另外,another user of this website is creating LIB and DLL files at the same time using Visual C++ .

那我该怎么办呢?

4 回答

  • 72

    好的,所以我发现http://binglongx.wordpress.com/2009/01/26/visual-c-does-not-generate-lib-file-for-a-dll-project/的答案说这个问题是由于没有导出任何符号而进一步指示如何导出符号来创建lib文件 . 为此,请将以下代码添加到DLL的.h文件中 .

    #ifdef BARNABY_EXPORTS
    #define BARNABY_API __declspec(dllexport)
    #else
    #define BARNABY_API __declspec(dllimport)
    #endif
    

    BARNABY_EXPORTS和BARNABY_API是项目的唯一定义 . 然后,您导出的每个函数都先于:

    BARNABY_API int add(){
    }
    

    通过单击新项目DLL向导上的“导出符号”框或对计算机程序员的lobotomies投票是可以防止此问题 .

  • 20

    你还应该在项目设置中指定def名称:

    配置>属性/输入/高级/模块>定义文件

  • 8

    通过选择“类库”,您不小心告诉它使用C的CLI(托管)扩展来创建.Net库 .

    而是创建一个Win32项目,并在下一页的“应用程序设置”中选择“DLL” .

    如果你想要去那条路线,你也可以从那些库选择中制作一个MFC DLL或ATL DLL,但听起来你没有 .

  • 25

    您的DLL项目是否有任何实际的导出?如果没有导出,链接器将不会生成导入库.lib文件 .

    在非Express版本的VS中,导入库名称在此处的项目设置中指定:

    Configuration Properties/Linker/Advanced/Import Library
    

    我认为它在Express中是相同的(如果它甚至提供配置名称的能力) .

相关问题