Tinyxml — ошибки ссылок при таргетинге на платформу x64

я использую 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

8

Решение

Вместо создания tinyxml для x64 platforms а затем добавив tinyxml.h а также tinystr.h в проект, я просто добавил все файлы библиотеки, включая .cpp файлы и теперь я могу ориентироваться на платформы x64, библиотека фактически создается при сборке всего проекта.

5

Другие решения

Похоже, tinyxml не поддерживает встроенные библиотеки из коробки.

Вот шаги, которые я выполнил для создания DLL из источников tinyxml 2.6.2:

  1. Откройте предоставленный файл SLN, tinyxml.slnв MS Visual Studio Express 2012 для рабочего стола Windows. Выберите для преобразования старых файлов проекта в новый формат при появлении запроса.
  2. В «Платформах решений» выберите «Диспетчер конфигурации …»
  3. Из «Платформа активного решения:« выбрать »<Новый …>»
  4. В поле «Введите или выберите новую платформу» выберите «x64», если он еще не выбран. Обязательно скопируйте настройки из конфигурации «Win32». Нажмите ОК. Нажмите Закрыть, чтобы выйти из диспетчера конфигурации.
  5. Щелкните правой кнопкой мыши по проекту tinyxml в обозревателе решений. Выберите «Свойства».
  6. Для «Конфигурация:» выберите «Все конфигурации». Аналогично, для «Платформа:» выберите «Все платформы».
  7. На странице «Свойства конфигурации» → «Общие» измените «Тип конфигурации» на «Динамическая библиотека (.dll)». Измените «Целевое расширение» на «.dll». Нажмите кнопку ОК, чтобы закрыть диалоговое окно страниц свойств tinyxml.
  8. Выберите конфигурацию «Release» и платформу «x64».
  9. Снова щелкните правой кнопкой мыши на проекте tinyxml в обозревателе решений и выберите «Перестроить».

В tinyxml_2_6_2\tinyxml\x64\Release ты найдешь tinyxml.dll, но нет библиотеки импорта (tinyxml.lib). Это потому, что символы не экспортируются. Увидеть Как мне создать библиотеку импорта (.lib) И DLL в Visual C ++?

Если вы хотите пойти по пути общей библиотеки, вам нужно будет экспортировать нужные символы через MSVC-специфичные __declspec(dllexport) модификатор. Увидеть Видимость символа в Windows.

3

Ошибки возникают, когда вы определяете TIXML_USE_STL для компиляции библиотеки, но не для источников, которые ссылаются на библиотеку. Конечным результатом является то, что библиотека скомпилирована с кодом, отличным от исходников, использующих библиотеку.

1
По вопросам рекламы [email protected]