我正在尝试使用C ++ 11,但是eclipse遇到了一些问题。我已经使用macports来获取gcc48,我已经遵循各种指南来让eclipse使用新的编译器,包括this,this, 我还将编译器命令从eclipse标准更改为g ++ - mp-4.8,如here所述
我正在尝试构建以下程序:
#include <iostream>
#include<memory>
using namespace std;
int main() {
std::unique_ptr<double> ptr(new double);
*ptr = 11.345;
cout << (*ptr) << endl;
return 0;
}
终端将编译此罚款,
make all
Building file: ../src/C++11.cpp
Invoking: Cross G++ Compiler
/opt/local/bin/g++ -I/opt/local/bin -I/opt/local/include -O0 -g3 -Wall -c -fmessage-length=0 -std=c++0x -MMD -MP -MF"src/C++11.d" -MT"src/C++11.d" -o "src/C++11.o" "../src/C++11.cpp"
Finished building: ../src/C++11.cpp
Building target: C++11
Invoking: Cross G++ Linker
g++ -o "C++11" ./src/C++11.o
Finished building target: C++11
并且程序运行正常。但是,在eclipse中,我仍然收到错误消息Symbol 'unique_ptr' could not be resolved
。
我想继续使用eclipse不仅仅是项目经理和makefile构建器,所以对此有任何帮助将不胜感激!
答案 0 :(得分:3)
不是使用g ++,而是使用clang ++。我使用答案Error when compiling some simple c++ code,clang 3.1 can't see unique_ptr?和How to compile a C++0x code on Eclipse CDT on mac?作为指导,以便采取以下步骤:
更改Project-&gt; Properties-&gt; C / C ++ Build - &gt;中的编译器。设置 - &gt; Gcc C ++编译器 - &gt;命令(将g ++改为clang ++)。
&gt;属性 - &gt; C / C ++构建 - &gt;设置 - &gt; Gcc C ++编译器 - &gt;杂项,将-std=c++11 -stdlib=libc++
附加到标志上。
与C / C ++ Build下的链接器相同 - &gt;设置 - &gt; Gcc C ++ Linker - &gt;命令
&gt; C / C ++ Build - &gt;设置 - &gt; Gcc C ++ Linker - &gt;其他,请将-stdlib=libc++
添加到链接器标记。
in Properties-&gt; C / C ++ General - &gt;预处理器包括路径,宏等 - &gt;提供商 - &gt; CDT GCC Builtin编译器设置,关闭“共享”选项,并将-std=c++11
附加到命令以获取编译器规范。
编译工作完美,程序运行良好。该日食无法识别智能指针似乎是一个错误:请参阅Turn off eclipse errors (that arent really errors)