2012-08-16 146 views
0

我正在用Qt Creator編寫一個小型的C++程序(使用GUI)並使用MinGW進行編譯。一切工作正常,當我編譯該項目在調試模式下,但只要我移動到發佈模式,我得到編譯器錯誤:Qt Creator發佈模式未定義的引用std :: out_of_range

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 
+0

這可能是您的.pro文件的問題,您可以發佈它嗎? – 2012-08-16 10:52:22

+0

對不起,我在.pro文件中找不到任何錯誤 – 2012-08-17 09:38:46

+0

感謝您看看雖然:) – 2012-08-17 13:01:36

回答

0

好吧,這個問題是固定的,但也許不完全理解。我通過將編譯器切換到MSVC並更改鏈接器選項的語法(例如-lboost_thread-mgw46-mt-1_50 - > -llibboost_thread-vc100-mt-1_50)來修復它,現在編譯時沒有問題。我會提出我的推理是什麼,我認爲可能是問題,但如果有錯會喜歡一個更好的答案:

  1. 雖然我想翻翻安裝時,我已經建立了Boost庫使用MinGW我發現了一個提到msvc的文件夾的數量(例如... boost \ bin.v2 \ libs \ date_time \ build_msvc-10.0)向我建議,我已經用MSVC構建它。
  2. 鏈接器錯誤聲稱無法找到與thread.cpp關聯的文件。
  3. 查看構建目錄的線程文件夾,所有.obj和.lib文件的路徑中都有msvc-10.0文件夾。
  4. 因此,我認爲MinGW編譯器在一個不存在的MinGW文件夾中尋找boost對象,所以失敗了。事實上,它在調試模式下工作我猜想與文件搜索的限制較少有關。