使用Visual Studio 10 C++时,出现奇怪的链接错误。出于某种原因,对全局对象的引用不会链接到该全局对象。它告诉我一个符号是未定义的,但是当我查看.cod文件时,符号就像白天一样平淡无奇。链接对象中奇怪的无法解析的外部错误
错误:
FTShell.lib(ftcommodule.obj) : error LNK2001: unresolved external symbol
"class CFTModuleShellBase * _pFTModule" ([email protected]@[email protected]@A)
但主CPP文件.cod文件同时显示了声明和全局符号的分配:
PUBLIC [email protected]@[email protected]@A ; _pFTModule
_DATA SEGMENT
[email protected]@[email protected]@A DD FLAT:[email protected]@[email protected]@A ; _pFTModule
ORG $+4
那么为什么不静态库的_pFTModule是否与我的源文件中的全局符号相匹配?
编辑:我的MSBuild从命令行运行:
Link:
C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\link.exe
/ERRORREPORT:QUEUE.... "C:\(path)\FTTrace.res"
"C:\(path)\FTTrace.obj"
我在最后发现只有一个obj文件。项目中有两个.cpp文件。和MSBUILD确实建立了这两个文件。那么为什么它没有将这两个文件传递给链接器。 .vcxproj文件不会以不同的方式处理.cpp文件。为什么MSBUILD不在链接步骤中包含这两个文件?
<ItemGroup>
<ClCompile Include="FTTrace.cpp" />
<ClCompile Include="TraceImpl.cpp" />
</ItemGroup>