LNK2001: Неразрешенный внешний символ "class ATL :: CStringT ..." - PullRequest
2 голосов
/ 23 февраля 2011

Я получаю следующую ошибку:

Error   1   error LNK2001: unresolved external symbol "class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > > __cdecl messageForCode(int,class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > >)" (?messageForCode@@YA?AV?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@HV12@@Z)    MyUIDlg.obj
Error   2   fatal error LNK1120: 1 unresolved externals C:\Documents and Settings\Administrator\Desktop\my-project\MyUI\Release\MyUI.exe

messageForCode определяется в проекте MyLibrary, который компилируется в статическую библиотеку. Эта библиотека не зависит от MFC и поэтому включает CString с использованием "#include". Он прекрасно компилируется.

MyUI - это проект .exe, который не удается скомпилировать из-за вышеуказанной ошибки. Он использует MFC. У меня есть теория, что существует конфликт между CString в MFC и atlstr.h. Я попытался статически и динамически связать ATL в настройках обоих проектов, но не смог устранить ошибку.

1 Ответ

1 голос
/ 03 ноября 2011

MessageForCode реализован в C или в C ++?В случае, если это реализовано в C, вам нужно обернуть его объявление 'extern "C"'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...