无法使用NDK插件为Eclipse设置__ANDROID__符号

时间:2013-12-22 21:56:54

标签: android eclipse plugins android-ndk symbols

我正在尝试编译其中一个Android NDK示例,特别是“native-activity”。我使用“现有代码中的Android项目”选项在Eclipse中为此示例创建了一个项目,然后使用“项目菜单”中的“Android工具 - >添加本机支持”选项将其转换为本机。

不幸的是,当我构建时,我收到以下错误:

无法解析类型'EGL_DEFAULT_DISPLAY'

我一直在寻找这个问题,大多数人都说是在编译期间需要定义"__ANDROID__"。建议是在项目属性中的“C / C ++ General - > Paths and Symbols”窗口中将其添加为符号。

但我的问题是我在“路径和符号”中实际上没有“符号”选项卡。我确实有其他C ++项目(非NDK),但我没有在这里。

enter image description here

我猜这与Eclipse的NDK插件的工作方式有关。有没有其他方法可以使用这里的选项定义此符号?或者我是否需要找到一种不同的方式来向Android项目添加C ++支持,从而为我提供“符号”选项卡?

2 个答案:

答案 0 :(得分:2)

我对丢失的Symbols标签有同样的问题,我终于开始四处寻找并发现每个工具链的标签都不同。由于某种原因,Android GCC工具链特别没有symbols标签。 (对我来说似乎是个错误)

要更改当前工具链: 属性 - > C / C ++ Build - >工具链编辑器

我必须取消选中Display compatible toolchains only 然后我选择了Cygwin GCC选项 并将Current builder设置为Android Builder

现在显示symbols标签。

据我所知,一切似乎与Android GCC工具链一样。如果这种方法有任何不良副作用,我不知道它们是什么。如果我找到了什么,我会回来更新我的答案。

答案 1 :(得分:-1)

请问我的拼写错误,我是学生,现在正在学习英语。我的项目有同样的问题。我不得不花一整天才能找到解决方案:)。在您的根项目文件夹中,您需要打开文件“ .cproject”并添加以下文本:

<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.android.gcc.option.definedSymbols.156386137" superClass="com.android.gcc.option.definedSymbols" valueType="definedSymbols">
                                    <listOptionValue builtIn="false" value="__ANDROID__=0"/>
</option>  

我不知道ID末尾的数字是什么意思,但我自由更改了它们,一切都很好。

此文本添加符号__ANDROID__。此外,“符号”标签变得可见:

This text adds symbol <code>__ANDROID__</code>. Moreover tab "Symbols" becomes visible

请注意,__ANDROID__的值为0。如果打开“偏好设置”->“ C / C ++常规/路径和符号/符号(现在在此处)”,则可以进行检查

在Eclipse中出现的__Symbols__部分的证明:

Proof of appearing <code>__Symbols__</code> section in Eclipse

最后,我的__.cproject__文件的一部分:

<storageModule moduleId="cdtBuildSystem" version="4.0.0">
    <configuration artifactName="${ProjName}" buildProperties="" description="" id="com.android.toolchain.gcc.665394794" name="Default" optionalBuildProperties="" parent="org.eclipse.cdt.build.core.emptycfg">
        <folderInfo id="com.android.toolchain.gcc.665394794.1631346437" name="/" resourcePath="">
            <toolChain id="com.android.toolchain.gcc.1551434208" name="Android GCC" superClass="com.android.toolchain.gcc">
                <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="com.android.targetPlatform.1128161810" isAbstract="false" superClass="com.android.targetPlatform"/>
                <builder id="com.android.builder.1391955059" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Android Builder" superClass="com.android.builder">
                    <outputEntries>
                        <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name=""/>
                    </outputEntries>
                </builder>
                <tool id="com.android.gcc.compiler.541863979" name="Android GCC Compiler" superClass="com.android.gcc.compiler">
                    <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.android.gcc.option.includePath.156366136" superClass="com.android.gcc.option.includePath" valueType="includePath">
                        <listOptionValue builtIn="false" value="&quot;C:\Frameworks\androidndk\platforms\android-19\arch-arm\usr\include&quot;"/>
                        <listOptionValue builtIn="false" value="&quot;C:\MinGW\include&quot;"/>
                        <listOptionValue builtIn="false" value="&quot;C:\Frameworks\androidndk\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\lib\gcc\arm-linux-androideabi\4.9.x\include&quot;"/>
                        <listOptionValue builtIn="false" value="&quot;C:\Frameworks\androidndk\sources\android\native_app_glue&quot;"/>
                    </option>
                    <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.android.gcc.option.definedSymbols.156386137" superClass="com.android.gcc.option.definedSymbols" valueType="definedSymbols">
                        <listOptionValue builtIn="false" value="__ANDROID__=0"/>
                    </option>
                    <inputType id="com.android.gcc.inputType.661587658" superClass="com.android.gcc.inputType"/>
                </tool>
            </toolChain>
        </folderInfo>
        <sourceEntries>
            <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="jni"/>
        </sourceEntries>
    </configuration>
</storageModule>

希望此信息会有用。