我正在使用Eclipse Juno和从https://dl-ssl.google.com/android/eclipse/下载的ADT(Android开发人员工具)插件。
我创建了一个启用了原生支持的Android应用程序项目(右键单击项目→“Android工具”→“添加原生支持”)。
尽管我的Application.mk
和Android.mk
文件中定位了C ++ 11,但Eclipse无法解析 std :: thread 或 std :: unique_ptr <等符号/ strong>,但是当我构建项目时它编译得很好:唯一的问题是C ++ 11符号解析。
如何让Eclipse正确解析C ++ 2011符号?
答案 0 :(得分:2)
如果你带有ADT插件的Eclipse Juno可以编译C ++ 11代码但是无法解析C ++ 11符号,那么这里是程序:
在文本编辑器中打开.cproject
文件。
搜索以下行(其中XXXXXXXXX是随机数):
<tool id="com.android.gcc.compiler.XXXXXXXXX" name="Android GCC Compiler" superClass="com.android.gcc.compiler">
将以下内容添加到其中:
<option id="com.android.gcc.compiler.option.preprocessor.def.768340103" superClass="com.android.gcc.compiler.option.preprocessor.def" valueType="definedSymbols">
<listOptionValue builtIn="true" value="__cplusplus=201103L"/>
<listOptionValue builtIn="false" value="__cplusplus=201103L"/>
<listOptionValue builtIn="true" value="__GXX_EXPERIMENTAL_CXX0X__"/>
<listOptionValue builtIn="false" value="__GXX_EXPERIMENTAL_CXX0X__"/>
</option>
你应该有这样的东西(,其中YYYYYYYYYY也是一个随机数):
<tool id="com.android.gcc.compiler.XXXXXXXXX" name="Android GCC Compiler" superClass="com.android.gcc.compiler">
<option id="com.android.gcc.compiler.option.preprocessor.def.768340103" superClass="com.android.gcc.compiler.option.preprocessor.def" valueType="definedSymbols">
<listOptionValue builtIn="true" value="__cplusplus=201103L"/>
<listOptionValue builtIn="false" value="__cplusplus=201103L"/>
<listOptionValue builtIn="true" value="__GXX_EXPERIMENTAL_CXX0X__"/>
<listOptionValue builtIn="false" value="__GXX_EXPERIMENTAL_CXX0X__"/>
</option>
<inputType id="com.android.gcc.inputType.YYYYYYYYYY" superClass="com.android.gcc.inputType"/>
</tool>
保存修改,重新启动 eclipse,如果C ++ 11符号仍未解决重建索引(右键单击项目→&#34;索引&#34;→&#34;重建&#34; )。
因为&#34;符号&#34;选项卡在项目的C / C ++选项中不可见,我被迫在.cproject
文件中手动添加这些行,以便将__cplusplus
的值设置为201103L
。< / em>的
我不确切知道.cproject文件是如何工作的,因此可能有更好的方法。我已经看到一些人改变了项目的工具集选项,以便制作&#34;符号&#34;标签可见(此处为Android NDK build, Method could not be resolved,此处为Setting up C++11 (std::thread) for NDK with ADT/Eclipse)。