я использую TinyXML библиотека для разбора XML-файлов в моем проекте. Когда я пытаюсь ориентироваться на платформы x64, я получаю ошибки LINKER, и вот одна из них:
Ошибка 4, ошибка LNK2001: неразрешенный внешний символ «private: static
struct TiXmlString :: Rep TiXmlString :: nullrep _ «(? nullrep_ @ TiXmlString @@ 0URep @ 1 @ A) ClassThatUsesTinyXML.obj
Обновить Я полагал, что x64-версия tinyxml не была установлена, но когда я попытался собрать библиотеку для x64-платформ, я получил эту ошибку:
LNK1561: entry point must be defined
Вместо создания tinyxml для x64 platforms
а затем добавив tinyxml.h
а также tinystr.h
в проект, я просто добавил все файлы библиотеки, включая .cpp
файлы и теперь я могу ориентироваться на платформы x64, библиотека фактически создается при сборке всего проекта.
Похоже, tinyxml не поддерживает встроенные библиотеки из коробки.
Вот шаги, которые я выполнил для создания DLL из источников tinyxml 2.6.2:
tinyxml.sln
в MS Visual Studio Express 2012 для рабочего стола Windows. Выберите для преобразования старых файлов проекта в новый формат при появлении запроса.В tinyxml_2_6_2\tinyxml\x64\Release
ты найдешь tinyxml.dll
, но нет библиотеки импорта (tinyxml.lib
). Это потому, что символы не экспортируются. Увидеть Как мне создать библиотеку импорта (.lib) И DLL в Visual C ++?
Если вы хотите пойти по пути общей библиотеки, вам нужно будет экспортировать нужные символы через MSVC-специфичные __declspec(dllexport)
модификатор. Увидеть Видимость символа в Windows.
Ошибки возникают, когда вы определяете TIXML_USE_STL для компиляции библиотеки, но не для источников, которые ссылаются на библиотеку. Конечным результатом является то, что библиотека скомпилирована с кодом, отличным от исходников, использующих библиотеку.