簡體   English   中英

Qt Creator發布模式未定義對std :: out_of_range的引用

[英]Qt Creator release mode undefined references to std::out_of_range

我正在用Qt Creator編寫一個小的C ++程序(帶有GUI),並用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

好的,問題已解決,但可能尚未完全理解。 我通過將編譯器切換到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文件夾中的增強對象,因此失敗了。 我猜它在調試模式下工作的事實與對文件的搜索約束較少有關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM