【发布时间】:2017-11-15 11:17:01
【问题描述】:
我想从我的源代码构建一个 DLL 文件,但我遇到了一个错误。链接过程中,命令行无法解析这么多对象,放弃链接。
我决定将对象拆分为两个库,然后从这两个库创建 DLL。
我运行我的 makefile,但链接因新错误而中断:unresolved external symbol _DllMainCRTStartup@12
我使用以下设置:
- 编译器选项:
/Od /MT /EHsc /MP /Zi /Zl /Zp8 /c /DSOMEDEFINE - 链接器选项:
/MAPINFO:EXPORTS /SUBSYSTEM:WINDOWS /MACHINE:X86 /MANIFEST /INCREMENTAL:NO /NOLOGO /DLL /DEBUG /OUT:"$(__NAME).dll" /LIBPATH:$(__MS_LIB_PATH) \ /LIBPATH:"$(SW_HOME)\lib" /LIBPATH:"$(SW_HOME)\common\lib" /PDB:"$(__NAME).pdb" /MAP:"$(__NAME).map"
我的构建过程分为三个步骤:
第一步:编译所有对象
第二步:使用lib.exe创建两个扩展名为*.LIB的文件
第三步:使用link.exe从LIB文件中创建DLL文件。
但我的标题中出现了链接错误。
所以,我认为问题的发生是因为在链接期间指向 Visual Studio 文件夹的某些路径不正确,或者在两个库中的对象拆分期间,出现问题并且一些信息消失了。 或者我没有为编译器和链接器使用正确的选项。
有人可以帮我解决吗?
【问题讨论】:
-
有一点标准:很多库路径,但没有库。我建议从新项目向导生成一些示例/测试项目并检查生成的链接命令。您可以在项目属性中查看该命令。
-
DllMainCrtStartup 是 DLL 的 CRT 入口点函数。您要么链接到错误的 CRT 库,要么使用错误的设置进行编译。
-
我怀疑任何人都会有耐心解决这个问题。 Start a fresh project,并在添加文件时对其进行编译。试着了解你在做什么。
标签: c++ c visual-studio dll