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

Enabling C++11 symbols resolution in Eclipse Juno ADT

本文关键字:符号 c++ 启用 Eclipse Juno ADT      更新时间:2023-10-16

我使用Eclipse Juno与ADT (Android Developer Tools)插件下载从https://dl-ssl.google.com/android/eclipse/.

我创建了一个启用原生支持的Android应用程序项目(右键单击该项目→"Android工具"& rrr;"添加本机支持")。

尽管在我的Application.mkAndroid.mk文件中针对c++ 11, Eclipse无法解析像std::threadstd::unique_ptr这样的符号,但是当我构建项目时,它编译得很好:唯一的问题是c++ 11符号解析。

如何使Eclipse正确解析c++ 2011符号?

如果带有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符号仍然无法解析重建您的索引 (右键单击项目→"指数"→"重建")。


因为"符号"选项卡在项目的C/c++选项中不可见,我被迫在.cproject文件中手动添加这些行,以便将__cplusplus的值设置为201103L

我不知道。cproject文件是如何工作的,所以可能有更好的方法来做到这一点。我看到一些人改变项目的工具集选项,以使"符号"选项卡可见(这里Android NDK构建,方法无法解决,这里设置c++ 11 (std::thread)与ADT/Eclipse的NDK)。