在Eclipse Juno ADT中启用C ++ 11符号解析

时间:2014-08-08 13:05:46

标签: c++ c++11 eclipse-adt

我正在使用Eclipse Juno和从https://dl-ssl.google.com/android/eclipse/下载的ADT(Android开发人员工具)插件。

我创建了一个启用了原生支持的Android应用程序项目(右键单击项目→“Android工具”→“添加原生支持”)。

尽管我的Application.mkAndroid.mk文件中定位了C ++ 11,但Eclipse无法解析 std :: thread std :: unique_ptr <等符号/ strong>,但是当我构建项目时它编译得很好:唯一的问题是C ++ 11符号解析。

如何让Eclipse正确解析C ++ 2011符号?

1 个答案:

答案 0 :(得分:2)

如果你带有ADT插件的Eclipse Juno可以编译C ++ 11代码但是无法解析C ++ 11符号,那么这里是程序:

  1. 在文本编辑器中打开.cproject文件。

  2. 搜索以下行(其中XXXXXXXXX是随机数)

    <tool id="com.android.gcc.compiler.XXXXXXXXX" name="Android GCC Compiler" superClass="com.android.gcc.compiler">
    
  3. 将以下内容添加到其中:

    <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>
    
  4. 保存修改,重新启动 eclipse,如果C ++ 11符号仍未解决重建索引右键单击项目→&#34;索引&#34;→&#34;重建&#34; )。


  5. 因为&#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)。