Qt Creator发布模式未定义对std::out_的引用超出范围 我用Qt Creator编写了一个小的C++程序(带有GUI),用MinGW编写。当我在调试模式下编译项目时,一切正常,但当我移动到发布模式时,就会出现编译器错误: undefined reference to 'std::out_of_range::~out_of_range()' thread.cpp

Qt Creator发布模式未定义对std::out_的引用超出范围 我用Qt Creator编写了一个小的C++程序(带有GUI),用MinGW编写。当我在调试模式下编译项目时,一切正常,但当我移动到发布模式时,就会出现编译器错误: undefined reference to 'std::out_of_range::~out_of_range()' thread.cpp,qt,boost,mingw,release,qt-creator,Qt,Boost,Mingw,Release,Qt Creator,当我点击错误时,我还得到: File not found: thread.cpp 我已经查看了Boost安装,找到了thread.cpp,它应该在我的项目的include路径上 有什么想法吗 编辑:这是我的.pro文件: #------------------------------------------------- # # Project created by QtCreator 2012-08-10T12:09:39 # #-------------------------------

当我点击错误时,我还得到:

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

好的,问题已经解决了,但可能还没有完全理解。我通过将编译器切换到MSVC并更改链接器选项的语法(例如-lboost_thread-mgw46-mt-1_50->-llibboost_thread-vc100-mt-1_50)修复了它,现在编译没有问题。我会就我认为可能存在的问题提出我的理由,但如果答案错误,我希望得到更好的答案:

  • 尽管我在查看安装时认为我已经用MinGW构建了Boost库,但我发现了一些提到msvc的文件夹(例如…Boost\bin.v2\libs\date\u time\build\u msvc-10.0),这向我表明我是用msvc构建的
  • 链接器错误声明无法找到与thread.cpp关联的文件
  • 查看build目录的thread文件夹,所有.obj和.lib文件的路径中都有msvc-10.0文件夹
  • 因此,我认为MinGW编译器在一个不存在的MinGW文件夹中寻找boost对象,因此失败了。事实上,它是在调试模式下工作的,我想这与较少约束的文件搜索有关

  • 这可能是你的.pro文件有问题,你能发布它吗?抱歉,我在.pro文件中找不到任何错误谢谢你看一下:)我有一个隐秘的怀疑我的Boost库是用MSVC构建的,但我正在尝试用MinGW编译,这会有影响吗?