ajh*_*158 6 eclipse java-native-interface android eclipse-cdt android-ndk
我正在使用Eclipse Indigo和Android/NDK混合项目.我添加了C++性质,几乎所有东西都在工作.自动构建工作; 也就是说,当我编辑文件时,调用ndk-build并成功完成 - 没有构建错误.鼠标悬停代码辅助工作(小窗口弹出有关该功能的信息).如果我将光标放在包含行并按F3,相关的头文件打开(根据我的配置而不是我期望的那个,但是相关的一个 - 可能是一个线索?).
如果我在.cpp文件中选择以下行,则会打开$ NDKROOT/platform/android-3/arch-arm/usr/include/ctype.h:
#include <ctype.h>
Run Code Online (Sandbox Code Playgroud)
(isdigit在此文件中定义)
但是,Eclipse坚持认为isdigit没有定义.我已经阅读了许多帖子,建议静态分析器或索引器都应该受到指责,但我已经尝试了许多建议的解决方案无济于事.
如果我添加如下所示的行,则错误消失,鼠标悬停代码帮助该功能工作:
extern int isdigit(int);
Run Code Online (Sandbox Code Playgroud)
同样,这不是链接器错误或编译器错误 - ndk-build完成且没有错误.这是日食里面的东西.谢谢参观!
编辑:我现在认为这是一个代码分析问题.更好的解决方案是编辑代码分析选项以使"无法解析功能"成为警告而不是错误.这样您可以在"问题"视图中看到警告,但继续工作.如果函数真的丢失了,编译器会告诉你!我还有一个新理论,问题在于符号链接后的代码分析器,因为所有"缺失"函数都在符号链接的包含文件中.会喜欢这个理论的任何意见.
在花了几天时间研究这样的问题之后,我开发了以下处理问题的方法.
我希望它可以帮助你或其他人:
ndk_build或ndk_build.cmd(在Windows上).eclipse juno(4.2)和CDT 8.1版没有任何乐趣.使用eclipse indigo(3.7)
通过查看"安装新软件",确保已安装并启用了indigo CDT(版本8.0X).它默认安装,但没有对某些下载靛蓝启用.
当您处理本机代码或本机代码的android配置时,请确保您在eclipse中处于C++/C透视图中,而不是 Java中.它具有欺骗性,但Java透视图中只有一部分可用选项.如果在执行"项目>属性"时看到"C/C++ general"作为选择,则可以确定您是C++/C透视图.
通常的问题是C/C++中的索引器 - land认为没有时会出现错误(例如,构建ndk-build工作正常,通常你甚至可以在控制台窗口看到这个).这是由第一个选项卡上"项目>属性> C/C++常规"的"路径和符号"部分中的错误路径引起的.
要解决此问题,主要工具是右键单击项目,选择"索引"和"搜索未解析的包含".这将告诉它找不到哪些文件 - 这些文件通常不是你文件中带有粉红色标记的文件.
要查找正确的文件,请在NDKROOT目录(安装NDK的位置)中进行搜索.一个典型的添加是: ${NDKROOT}/platforms/android-9/arch-arm/usr/include或右侧android-N为您的Android目标.由于Android的多个版本和C++标准库的副本,NDK中有许多标准包含目录的副本.
当你在属性> C/C++通用/路径和设置上更改索引器配置时,eclipse中的"未解析包含"视图不会自动更新,因此请确保每次都重新运行它.eclipse中的大多数视图都能正确更新!
此外,eclipse编辑器中源代码视图中的小红色/粉红色错误标记也不会自动更新.您必须以某种方式"触摸"文件才能发现错误现在已修复.
| 归档时间: |
|
| 查看次数: |
4258 次 |
| 最近记录: |