当我运行在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"
可能是什么原因?
答案 0 :(得分: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
支持链接: