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

标签 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::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 build, Method could not be resolved 和此处为 Setting up C++11 (std::thread) for NDK with ADT/Eclipse)。

关于c++ - 在 Eclipse Juno ADT 中启用 C++11 符号解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25204247/

相关文章:

c++ - 跳过不兼容.../找不到

Java/Eclipse - 不再有 R 文件

c++ - 检查元素是否在列表中(包含)

c++ - u8R"delim(SomeTextInHere)delim"在 C++ 中是什么意思?

c++ - snprintf : Same code - different errors/warnings on different g++ compilers

c++ - 如何测试是否存在模板函数特化

android - 为什么我的代码没有在我的应用程序上更新? (更新 eclipse 后)

android - 如何在 Eclipse 中将真实手机设置为默认目标

c++ - with -lpthread,g++编译器错误, "undefined reference to "信号量调用如 `sem_open'

c++ - 静态类变量是否与外部变量相同,仅具有类范围?