Qt Creator发布模式未定义对std :: out_of_range的引用

时间:2012-08-16 10:22:41

标签: qt boost mingw release qt-creator

我正在用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,它应该在我项目的include路径上。

有什么想法吗?

编辑:这是我的.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

1 个答案:

答案 0 :(得分: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文件夹中寻找boost对象,因此失败了。事实上,它在调试模式下工作,我猜这与文件搜索较少有关。