移植到Windows时出现几个链接器问题

时间:2016-10-31 22:46:59

标签: c++ windows boost mingw xerces-c

我开发了一个程序,它在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()'

提前感谢您的帮助!

0 个答案:

没有答案