Qt创建者:对`boost :: gregorian :: greg_month :: as_short_string()const'的未定义引用

时间:2012-03-04 21:29:22

标签: qt boost

尝试在Win7 64bit上的Qt Creator中运行以下代码。

#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/date_time/gregorian/gregorian.hpp>

int main() {
    using namespace boost::posix_time;
    ptime t = microsec_clock::universal_time();
    std::cout << to_iso_extended_string(t) << "Z\n";
}

这是我的* .pro文件:

INCLUDEPATH += "C:\Program Files (x86)\boost\boost_1_47"
CONFIG += boost
LIBS += -L"C:\Program Files (x86)\boost\boost_1_47\lib"
LIBS += -lboost_date_time-vc71-mt-1_47

我收到以下错误:

  

c:\ Program Files(x86)\ boost \ boost_1_47 \ boost \ date_time \ date_formatting.hpp:49:错误:未定义引用`boost :: gregorian :: greg_month :: as_long_string()const'

     

c:\ Program Files(x86)\ boost \ boost_1_47 \ boost \ date_time \ date_formatting.hpp:44:错误:未定义引用`boost :: gregorian :: greg_month :: as_short_string()const'

我怎样才能让它发挥作用?我读到我需要构建日期时间lib,但我不确定如何做到这一点。

1 个答案:

答案 0 :(得分:3)

这些boost库二进制文件是用Visual C ++编译器编译的(您可以通过文件名中的'vc71'进行编译),但是您正在使用QtCreator和MinGW编译器,并且您无法混合编译的C ++库不同的编译器(只有库的C部分可用)。

您可以继续使用MinGW并自行重新编译boost *,或者在项目配置中更改QtCreator使用的编译器,假设您已为该编译器安装了任何版本的Visual C ++和Qt二进制文件。

*:由于MinGW可以配置许多不同的不兼容选项,因此重新编译boost比使用预编译的二进制文件更安全,除非您确定它们是使用Qt SDK中包含的相同MinGW构建的。