2016-07-27 45 views
2

我想在Linux上运行我在Linux Ubuntu上开发的Windows上的QT项目。不幸的是,我无法管理它来正确链接增强库。这里是对问题的详细描述。未定义的引用来提升Windows上QT创建者的库

我从https://nuwen.net/mingw.html,13.5版本下载了MinGW,这样gcc版本5.3.0与MinGW版本的QT相匹配。选择这个版本的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

其中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

当我建立它,我得到很多的不确定引用错误,如
错误:未定义的引用`提振::输入输出流:: zlib的:: DEFAULT_STRATEGY”

有趣的是,如果C:/ MinGW_53/MinGW的/ lib目录/ MYL ib也包含libstdC++。a我也得到std :: cout,std :: ifstream等链接错误。

我目前被卡住了,我会对任何反馈非常有帮助。

最佳, 康斯坦丁

+0

您是否重新运行qmake? –

+0

是的,从Build菜单我首先运行qmake,然后重建项目。仍然没有成功... – Konstantin

+0

也许这是更多关于[标签:qt-creator]比那些其他标签。 –

回答

0

添加库路径boost_iostreams

-LC:/MinGW/lib \ 

行后:

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

应该修复它。

+0

感谢您的回应! C:/ MinGW_53/MinGW/lib/mylib是boost_iostreams的库路径。我复制mylib libboost_iostreams.a和其他必要的.a文件。如果我给C:/ MinGW_53/MinGW/lib /作为库路径,即使是std :: cout也会出现链接错误。任何想法这可能意味着什么?.. – Konstantin

+0

这听起来像它甚至没有链接到标准库。尝试添加'QMAKE_CXXFLAGS + = -stdlib = libC++' – kenba

+0

我的编译器是g ++,我得到了无法识别的命令行选项。 – Konstantin

0

最后我能够解决问题。这是我做的。我使用Qt的控制台上的Windows 10

  1. 我编译升压使用QT 5.7如下所述:http://cpp-qt-mac-win.blogspot.co.uk/2011/10/qt-boost-for-beginners-step-by-step.html

  2. 然后,我创建了一个新项目,并添加到提高的路径和必要的库,在我的问题中描述。

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