5

我最近将我的 OSX 升级到山狮,因为我不能再使用 Qt Creator 编译我的项目。我收到一堆错误,如下所示:

/Users/user/codes/lib/io/xdmfWriter.cpp:63: error: explicit instantiation of 'std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]' but no definition available

/Users/user/codes/lib/io/xdmfWriter.cpp:-1: In instantiation of 'std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]':

/Users/user/codes/lib/io/xdmfWriter.cpp:63: instantiated from here

// xdmfWriter.cpp -- line 63:
gridName << xdmfName_ << "." << timeStep;

gridName是一个std::ostringstream对象,xdmfName_是一个std::string声明为类的私有成员xdmfWriter并在类构造函数中初始化的变量。我以前没有这个问题......有什么想法吗?

4

3 回答 3

6

这可以通过添加 a 来解决,c_str()如下所示:

gridName << xdmfName_.c_str() << "." << timeStep;

然而,这不是一个永久的解决方案。

更新:我在https://web.archive.org/web/20140809210004/http://qt-project.org/forums/viewthread/19106/P15找到了解决方案

您需要更改-mmacosx-version-min=10.5为. 这是因为适用于 10.5 或 10.6 的 SDK 不包含在 Mountain Lion 和 XCode 4.4 中。$QTDIR/mkspecs/common/g++-macx.conf-mmacosx-version-min=10.7

于 2012-08-02T10:14:57.740 回答
6

我尝试更改 g++-macx.conf 文件,但我仍然收到错误。我发现使用:

QMAKE_CXXFLAGS += -fpermissive

在我的专业档案上做了诀窍。

于 2012-10-27T17:32:48.537 回答
2

听起来如果我使用Clang工具链(它强制clang++而不是llvm-g++)我没有这个问题......

于 2012-08-01T17:41:41.627 回答