2016-07-27 5 views
2

私はLinux Ubuntuで開発したWindows上でQTプロジェクトを実行しようとしています。残念ながら、私はブーストライブラリを正しくリンクするためにそれを管理することはできません。この問題の詳細な説明は次のとおりです。Windows上のQT作成者のブーストライブラリへの未定義参照

https://nuwen.net/mingw.html、バージョン13.5からMinGWをダウンロードして、gccバージョン5.3.0がQTのMinGWバージョンと一致するようにしました。このMinGWのバージョンを選択する理由は、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は、あらかじめコンパイルされたオブジェクトファイルです。

私は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は、そのよう

libboost_iostreams.aとしての私は.aファイルが含まれています/ MinGW_53/MinGWの/ libに/ MYL:C場合、 `後押しに未定義の参照::のiostream :: zlibの:: default_strategy」興味深いことに

:私は、このような
エラーなど、多くの未定義の参照エラーが発生しますibにはlibstdC++も含まれています。a std :: cout、std :: ifstreamなどのエラーもリンクされます。

私は現在スタックしており、フィードバックに非常に役立ちます。

ベスト、 コンスタンチン

+0

qmakeを再実行しましたか? –

+0

はい、[ビルド]メニューから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

私はこの問題を解決できました。ここに私がしたことがあります。そして、私は新しいプロジェクトを作成し、後押しするパスと必要なライブラリを追加http://cpp-qt-mac-win.blogspot.co.uk/2011/10/qt-boost-for-beginners-step-by-step.html

  • :私はここで説明するようにQTのコンソールを使用してブーストをコンパイル

    1. 10 Windows上でQT 5.7を使用しています私の質問に記載されています。

    重要なメモ私はqmakeを実行してプロジェクトを再構築することで、既存のプロジェクトのパスを更新しようとしました。私は古いパスを "標準"にしていたのと同じエラーが出ていました。どうやら、何かがキャッシュされていて、変更は何もしませんでした。しかし、私がライブラリに間違った道を与えた場合、それは不平を言う。したがって、QTは非常に混乱した動作をします。誰かがそれを説明できるなら、それは役に立つでしょう。

  • 関連する問題