Использование Visual Studio 10 C++, у меня возникла странная ошибка ссылки. По какой-то причине ссылки на глобальный объект не будут ссылаться на этот глобальный объект. Это говорит мне, что символ еще не определен, но когда я его просматриваю .cod-файл, символ прямо там как день.Странные нерешенные внешние ошибки в связанных объектах
Ошибка:
FTShell.lib(ftcommodule.obj) : error LNK2001: unresolved external symbol
"class CFTModuleShellBase * _pFTModule" ([email protected]@[email protected]@A)
Но .COD файл для основного файла CPP показывает как декларацию и распределения глобального символа:
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 соответствует глобальному символу в исходном файле?
EDIT: Я побежал 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>