Я разработал программу, которая отлично компилируется и работает в Linux, но теперь я пытаюсь связать программу с Windows и получаю две группы ошибок.
Программа зависит от следующих библиотек. Xerces-c++ и boost::file_system, который сам требует boost::system.
Я использую qmake в качестве файловой системы, а библиотеки связаны следующими строками (автоматически сгенерированными qtcreator):
win32: LIBS += -L$$PWD/../local/boost_1_54_032bit/lib32-msvc-11.0/ -llibboost_filesystem-vc110-gd-1_54
INCLUDEPATH += $$PWD/../local/boost_1_54_032bit/libs
DEPENDPATH += $$PWD/../local/boost_1_54_032bit/libs
win32: LIBS += -L$$PWD/../xerces-c-3.1.4/xerces-c-3.1.4/src/.libs/ -lxerces-c
INCLUDEPATH += $$PWD/../xerces-c-3.1.4/xerces-c-3.1.4/src
DEPENDPATH += $$PWD/../xerces-c-3.1.4/xerces-c-3.1.4/src
win32: LIBS += -lboost_system-vc110-gd-1_54
Я скомпилировал Xerces-c++ с mingw 5.3.0-2 и ./configure LDFLAGS=-no-undefined
Когда я связываюсь с xerces-С++, я получаю следующие ошибки:
C:\xerces-c-3.1.4\xerces-c-3.1.4\src\.libs\libxerces-c.a(DOMLSOutputImpl.o):-1: Fehler: duplicate section `.rdata$_ZTVN11xercesc C:\local\boost_1_54_0\boost\system\error_code.hpp:222: Error: undefined reference to `boost::system::generic_category()'
113XMLAttDefListE[__ZTVN11xercesc C:\local\boost_1_54_0\boost\system\error_code.hpp:222: Error: undefined reference to `boost::system::generic_category()'
113XMLAttDefListE]' has different size
После прочтения подобных вопросов на так (Regex Связывание библиотеки Boost в режиме выпуска предупреждает, что дублирующийся раздел имеет другой размер при использовании набора инструментов mingw-w64), я попытался скомпилировать библиотеку и программу с флагами компилятора -Os -march=i686 -fno-tree-vectorize без каких-либо улучшения.
Вторая группа ошибок относится к библиотеке boost. Я связываюсь с предварительно скомпилированным двоичным файлом boost::system и boost::filesystem, но когда я пытаюсь связать программу, я получаю ошибки:
C:\local\boost_1_54_0\boost\system\error_code.hpp:222: Error: undefined reference to `boost::system::generic_category()'
Заранее спасибо за вашу помощь!
libboost_filesystem-vc110-gd-1_54
выглядит как библиотека, созданная и предназначенная для использования с MS Visual C++ 11.0 (MSVS2012), а не с MinGW. - person Dan Mašek   schedule 02.11.2016