0

当我运行在 Linux 中创建的项目时,“std::cout<<...”行中出现错误:

void Assert(bool condition, std::string message)
  {
    if(!condition)
     {
        std::cout<<"message"<<message<<std::endl;
        int s = 4/0;
     }
}

错误信息:

/MainData.cpp:159: 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

包括行:

#include"iostream"
#include"vector"
#include "math.h"
#include"cstdlib"
#include "string"

可能是什么原因?

4

1 回答 1

2

看来这是一个特定于 MacOS 的怪癖,通过添加编译器标志来解决-mmacosx-version-min=10.7

具体来说(如下面的第一个链接所述),将这两行添加到您的 .pro 文件中:

QMAKE_CFLAGS_X86_64 += -mmacosx-version-min=10.7
QMAKE_CXXFLAGS_X86_64 = $$QMAKE_CFLAGS_X86_64

支持链接:

于 2013-11-13T05:52:59.743 回答