我开发了一个程序,它在linux上编译并运行良好,但现在我试图在Windows上链接程序并有两组错误。
该程序取决于以下库。 Xerces-c ++和 boost :: file_system,它本身需要boost :: system。
我使用qmake作为文件系统,并且libs与以下行链接(由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
我使用mingw 5.3.0-2和./configure编译了Xerces-c ++ LDFLAGS = -no-undefined
当我链接xerces-c ++时,我收到以下错误:
C:\xerces-c-3.1.4\xerces-c-3.1.4\src\.libs\libxerces-c.a(DOMLSOutputImpl.o):-1: Fehler: duplicate section `.rdata$_ZTVN11xercesc_3_113XMLAttDefListE[__ZTVN11xercesc_3_113XMLAttDefListE]' has different size
在阅读了类似的问题(Regex Boost library linking in release mode warns "duplicate section has different size" when using mingw-w64 toolchain)之后,我尝试用编译器标志-Os -march = i686 -fno-tree-vectorize编译库和程序而没有任何改进。
第二组错误与升级库有关。我链接到boost :: system和boost :: filesystem的预编译二进制文件,但是当我尝试链接程序时,我得到错误:
C:\local\boost_1_54_0\boost\system\error_code.hpp:222: Error: undefined reference to `boost::system::generic_category()'
提前感谢您的帮助!