0

QtCreatorを使用して(GUIを使用して)小さなC ++プログラムを作成し、MinGWを使用してコンパイルしています。プロジェクトをデバッグモードでコンパイルするとすべて正常に動作しますが、リリースモードに移行するとすぐに、コンパイラエラーが発生します。

undefined reference to 'std::out_of_range::~out_of_range()'         thread.cpp

エラーをクリックすると、次のようにもなります。

File not found: thread.cpp

Boostのインストールを調べて、thread.cppを見つけました。これは、プロジェクトのインクルードパスにあるはずです。

何か案は?

編集:これが私の.proファイルです:

#-------------------------------------------------
#
# Project created by QtCreator 2012-08-10T12:09:39
#
#-------------------------------------------------

QT       += core gui

TARGET = GeneDropWin
TEMPLATE = app

SOURCES += main.cpp \
    genedrop.cpp \
    mainbody.cpp \
    biofunctions.cpp \
    fileio.cpp \
    settings.cpp

HEADERS  += genedrop.h \
    geneclasses.h \
    paramclass.h \
    mainbody.h \
    biofunctions.h \
    fileio.h \
    geneclasses.h \
    settings.h

FORMS    += genedrop.ui \
    settings.ui

#Stuff I've added
INCLUDEPATH += "C:\\Program Files\\boost_1_50_0"
LIBS += -L"C:\\Program Files\\boost_1_50_0\\stage\\lib" -lboost_thread-mgw46-mt-1_50 -lboost_system-mgw46-mt-1_50 -lboost_date_time-mgw46-mt-1_50 -lboost_chrono-mgw46-mt-1_50
CONFIG += static \
    release

RESOURCES += \
    NIABLogo.qrc
4

1 に答える 1

0

問題は修正されましたが、完全には理解されていない可能性があります。コンパイラをMSVCに切り替え、リンカーオプションの構文を変更して修正しました(例:-lboost_thread-mgw46-mt-1_50-> -llibboost_thread-vc100-mt-1_50)。問題なくコンパイルできるようになりました。何が問題だったのかについての私の推論を提示しますが、間違っている場合はより良い答えをいただければ幸いです。

  1. インストールを調べたときにMinGWでBoostライブラリを構築したと思っていましたが、代わりにmsvcに言及しているフォルダがいくつか見つかりました(例:... boost \ bin.v2 \ libs \ date_time \ build_msvc-10.0)。 MSVCで構築していました。
  2. リンカエラーは、thread.cppに関連付けられたファイルを見つけることができないと主張しました。
  3. ビルドディレクトリのスレッドフォルダを見ると、すべての.objファイルと.libファイルのパスにmsvc-10.0フォルダがあります。
  4. したがって、MinGWコンパイラは存在しないMinGWフォルダ内のブーストオブジェクトを探していたため、失敗したと思います。デバッグモードで動作したという事実は、ファイルの検索の制約が少ないことに関係していると思います。
于 2012-08-20T13:12:58.010 に答える