Несколько проблем с компоновщиком при переносе на Windows

Я разработал программу, которая отлично компилируется и работает в 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()'

Заранее спасибо за вашу помощь!


person Thorsten    schedule 31.10.2016    source источник
comment
libboost_filesystem-vc110-gd-1_54 выглядит как библиотека, созданная и предназначенная для использования с MS Visual C++ 11.0 (MSVS2012), а не с MinGW.   -  person Dan Mašek    schedule 02.11.2016
comment
g++ может связывать библиотеки msvc (но могут быть проблемы во время выполнения). Раньше я использовал библиотеки boost, скомпилированные с помощью mscv в сочетании с g++, без каких-либо проблем.   -  person Thorsten    schedule 03.11.2016