如何在Visual C++中创建.lib文件和.exe文件?

Mos*_*Bin 13 c++ linker static-libraries visual-c++

我目前有一个控制台项目,它创建一个.exe文件; 我希望它也创建一个.lib文件,以便编译为DLL的其他项目能够从原始项目中调用函数.

我知道这是可能的,但我找不到怎么做.如何告诉链接器还链接.lib?

Eya*_*nik 18

发布此作为参考我知道原始帖子很久以前发布,但这仍然适用于需要解决此问题的任何人.

转到要为其创建.lib文件的项目,然后执行以下步骤:

  1. 右键单击该项目.
  2. 选择属性.
  3. 选择构建事件.
  4. 选择预链接事件.
  5. 最后在命令行中粘贴这个:

    @ECHO ON @ECHO "$(VC_ExecutablePath_x86)\lib.exe" /out:"$(OutDir)$(ProjectName).lib" "$(IntermediateOutputPath)*.obj" "$(VC_ExecutablePath_x86)\lib.exe" /out:"$(OutDir)$(ProjectName).lib" "$(IntermediateOutputPath)*.obj"

这将调用lib工具从生成的目标文件中生成lib文件.


小智 10

一般来说这是不可能的 - 静态库和可执行文件是完全不同的动物.处理这种情况的方法是创建两个项目 - 一个用于库,其中包含所有功能.还有一个用于可执行文件,它是一个只需调用库中函数的瘦包装器.


Ger*_*dez 6

如果应用程序 (.exe) 项目中的任何符号被导出(例如使用 __declspec(dllexport) ),将同时生成 .exe 和 .lib 文件请参阅: 为什么我的 Visual C++ .exe 项目构建创建 .lib 和 . exp文件?