Windows上QT创建者中未定义的引用来增强库

时间:2016-07-27 10:46:22

标签: c++ windows qt boost mingw32

我正在尝试在Windows上运行我在Linux Ubuntu上开发的QT项目。不幸的是,我无法管理它以正确链接boost库。以下是该问题的详细说明。

我从https://nuwen.net/mingw.html版本13.5下载了MinGW,这样gcc版本5.3.0与QT的MinGW版本匹配。选择此版本的MinGW的原因是它包含用于压缩的boost库,例如zlib。从命令行我编译并运行我的程序没有任何问题:

g ++ -std = c ++ 11 -w -IC:/ MinGW / include -LC:/ MinGW / lib bAya.cpp Ao Bo Co -o baya -lboost_iostreams -lz -lbz2 < / p>

其中A,B,C是我预先编译的目标文件。

在QT创建者中,我选择了MinGW编译器(C:\ MinGW_53 \ MinGW \ bin \ g ++。exe)并使用编译器创建了一个新的默认工具包。

我的.pro文件如下所示:

MAKE_CXXFLAGS += -std=c++11

INCLUDEPATH += C:/MinGW_53/MinGW/include \
C:/Users/kuzk/Documents/src

LIBS += -LC:/MinGW_53/MinGW/lib/mylib \
-lboost_system \
-lboost_iostreams \
-lz \
-lbz2

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

SOURCES += main.cpp\
    mainwindow.cpp \
../src/A.cpp \
../src/B.cpp \
 ../src/C.cpp 

HEADERS  += mainwindow.h \
../src/A.h \
../src/B.h \
 ../src/C.h

文件夹C:/ MinGW_53 / MinGW / lib / mylib包含我的.a文件,例如libboost_iostreams.a

当我构建它时,我会得到许多未定义的引用错误,例如
错误:未定义的引用`boost :: iostreams :: zlib :: default_strategy'

有趣的是,如果C:/ MinGW_53 / MinGW / lib / mylib也包含libstdc ++。我也会将错误链接到std :: cout,std :: ifstream等。

我目前陷入困境,我会对任何反馈非常有帮助。

最佳, 康斯坦丁

2 个答案:

答案 0 :(得分:0)

添加boost_iostreams的库路径:

-LC:/MinGW/lib \

行后:

LIBS += -LC:/MinGW_53/MinGW/lib/mylib \

应该修复它。

答案 1 :(得分:0)

最后我能够解决问题。这就是我做的。我在Windows 10上使用QT 5.7。

  1. 我使用QT的控制台编译了boost,如下所述:http://cpp-qt-mac-win.blogspot.co.uk/2011/10/qt-boost-for-beginners-step-by-step.html

  2. 然后我创建了一个新项目,并添加了boost的路径和必要的库,如我的问题所述。

  3. 一个重要的说明。我尝试通过运行qmake然后重建项目来更新现有项目中的路径。我得到了与“标准”提升的旧路径相同的错误。显然,有些东西被缓存了,而且变化没有做任何事情。但是,如果我给一个错误的路径它抱怨了。因此,QT的行为非常混乱。如果有人可以解释,那将会有所帮助。