Привет, я пытаюсь обновить проект, который уже встроен в 32-разрядную до 64-разрядную версии в Windows 7. У меня есть эта библиотека dll xerces 2_7, используемая в приложении, поэтому я скачал исходный код для версии xerces2_7_0 и собрал библиотеки в 64-разрядной версии. Нет проблем до здесь. Но когда я пытаюсь подключить эти библиотеки к моему проекту, он выдает ошибки компоновщика. ниже приведены ошибки
error LNK2019: unresolved external symbol "__declspec(dllimport) public: static bool __cdecl xercesc_2_7::DOMImplementation::loadDOMExceptionMsg(enum xercesc_2_7::DOMException::ExceptionCode,unsigned short * const,unsigned int)" (__imp_?loadDOMExceptionMsg@DOMImplementation@xercesc_2_7@@SA_NW4ExceptionCode@DOMException@2@QEAGI@Z) referenced in function "int `private: bool __cdecl
error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned short const * const xercesc_2_7::XMLUni::fgDOMDatatypeNormalization" (__imp_?fgDOMDatatypeNormalization@XMLUni@xercesc_2_7@@2QBGB)
error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned short const * const xercesc_2_7::XMLUni::fgDOMValidateIfSchema" (__imp_?fgDOMValidateIfSchema@XMLUni@xercesc_2_7@@2QBGB)
error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned short const * const xercesc_2_7::XMLUni::fgXercesSchemaFullChecking" (__imp_?fgXercesSchemaFullChecking@XMLUni@xercesc_2_7@@2QBGB)
error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned short const * const xercesc_2_7::XMLUni::fgXercesSchema" (__imp_?fgXercesSchema@XMLUni@xercesc_2_7@@2QBGB)
error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned short const * const xercesc_2_7::XMLUni::fgDOMNamespaces" (__imp_?fgDOMNamespaces@XMLUni@xercesc_2_7@@2QBGB)
error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class xercesc_2_7::DOMImplementation * __cdecl xercesc_2_7::DOMImplementationRegistry::getDOMImplementation(unsigned short const *)" (__imp_?getDOMImplementation@DOMImplementationRegistry@xercesc_2_7@@SAPEAVDOMImplementation@2@PEBG@Z) referenced in function "private: bool __cdecl
Поэтому я сомневался, действительно ли я построил этот xerces 2_7_0 в 64-битной среде и написал тестовый проект для 64-битного консольного приложения, попытался подключить библиотеки xerces и смог успешно построить проект (использовал тот же набор вызовов, что и в моем проекте).
Я использовал средство обхода зависимостей, чтобы проверить все зависимости;
Когда я попробовал обходчик зависимостей на моей 64-битной dll xerces, я обнаружил ошибки при открытии файла, ниже приведены ошибки:
Error: The Side-by-Side configuration information for "c:\users\vivek\desktop\xerces64bit\x64\debug\XERCES64BIT.EXE" contains errors. The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail (14001).
Error: At least one required implicit or forwarded dependency was not found.
Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module.
Error: Modules with different CPU types were found.
Любые идеи, что я делаю неправильно, и почему он не жаловался на мое 64-битное тестовое приложение. Кстати, я использую Visual Studio 2008.
Спасибо
Update 1:
Хорошо, здесь я уменьшил количество ошибок прохождения зависимостей до 2
Error: The Side-by-Side configuration information for "c:\users\vivek\desktop\xerces64bit\x64\debug\XERCES64BIT.EXE" contains errors. The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail (14001).
Error: At least one required implicit or forwarded dependency was not found.
Другие 2 ошибки из-за того, что я использовал обходчик зависимостей, был 32-битным исполняемым файлом. Сейчас я использую 64-битный обходчик зависимостей, но все же вижу 2 ошибки.
Update 2:
Я избавился от 2 ошибок, изменив CRT на / MT. Но я все еще не могу связать эту библиотеку с моим проектом.
Я понял. Это была проблема с настройками языка. Под Configuration Properties
->C/C++
->Language
, Treat wchar_t as Built in Type
был установлен на No
в моем проекте, где я собираю библиотеку xerces с опцией yes.
это имело значение.
Других решений пока нет …