我正在尝试编译其中一个Android NDK示例,特别是“native-activity”。我使用“现有代码中的Android项目”选项在Eclipse中为此示例创建了一个项目,然后使用“项目菜单”中的“Android工具 - >添加本机支持”选项将其转换为本机。
不幸的是,当我构建时,我收到以下错误:
无法解析类型'EGL_DEFAULT_DISPLAY'
我一直在寻找这个问题,大多数人都说是在编译期间需要定义"__ANDROID__"
。建议是在项目属性中的“C / C ++ General - > Paths and Symbols”窗口中将其添加为符号。
但我的问题是我在“路径和符号”中实际上没有“符号”选项卡。我确实有其他C ++项目(非NDK),但我没有在这里。
我猜这与Eclipse的NDK插件的工作方式有关。有没有其他方法可以使用这里的选项定义此符号?或者我是否需要找到一种不同的方式来向Android项目添加C ++支持,从而为我提供“符号”选项卡?
答案 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__
。此外,“符号”标签变得可见:
请注意,__ANDROID__
的值为0。如果打开“偏好设置”->“ C / C ++常规/路径和符号/符号(现在在此处)”,则可以进行检查
在Eclipse中出现的__Symbols__
部分的证明:
最后,我的__.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=""C:\Frameworks\androidndk\platforms\android-19\arch-arm\usr\include""/>
<listOptionValue builtIn="false" value=""C:\MinGW\include""/>
<listOptionValue builtIn="false" value=""C:\Frameworks\androidndk\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\lib\gcc\arm-linux-androideabi\4.9.x\include""/>
<listOptionValue builtIn="false" value=""C:\Frameworks\androidndk\sources\android\native_app_glue""/>
</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>
希望此信息会有用。