Eclipse中使用JNI编写C代码时出现“Unresolved inclusion: <***.h>”的解决方案

1 致谢

感谢初道网友(估计是这个名字吧 不过也有可能是转载的 我还是由衷地表达一下谢意)
链接如下: http://www.51testing.com/html/02/n-862402.html

2 问题描述

今天在学习JNI编程时遇到一个问题 编写C代码时
在头文件引入的地方总会出现一个问题“Unresolved inclusion: <***.h>” 最常见的就是“Unresolved inclusion: <jni.h>”
基本上所有通用的头文件都会出现这个错误 从而会导致后面的很多函数调用等等各种错误
其实归根到底 就C语言基本的头文件库都没有都正确的引入
所以我们需要进行一个引入的操作

3 解决方案

以下是我的解决方案 其中参考了上文中的资料
我觉得这种方案还是比较好的 不过其实可以进行简化
大家可以看看作为参考

1 添加系统环境变量

首先是添加系统环境变量 也就是在“系统属性”中
我的定义是
变量名:ANDROID_NDK_HOME
变量值:(NDK根目录)
我的目录是:E:\Path\android-ndk-r10e-windows-x86_64\android-ndk-r10e
最后一个末节点文件夹名是“android-ndk-版本号”

2 添加Eclipse中C/C++环境变量

然后进入Eclipse中进行设置
点击 Windows→Preferences→C/C++→Build→Environmen
这时,如果之前已经在系统环境变量中添加了NDK的根目录,那么点右边的Select即可从系统中选择该变量,选中后点OK
然后的效果如图
Eclipse中使用JNI编写C代码时出现“Unresolved inclusion: <***.h>”的解决方案_第1张图片

之后列表中将出现导入的环境变量 如图
Eclipse中使用JNI编写C代码时出现“Unresolved inclusion: <***.h>”的解决方案_第2张图片

3 添加NDK的C语言通用库

然后进入项目属性设置,将对应的C语言通用库添加进去:
Project→Properties→C/C++ General→Paths and Symbols
然后在Include选项卡中 点击Add
Eclipse中使用JNI编写C代码时出现“Unresolved inclusion: <***.h>”的解决方案_第3张图片

之后就要填入对应的内容 首先点击“Variables...”
然后选择“ANDROID_NDK_HOME” 然后OK
Eclipse中使用JNI编写C代码时出现“Unresolved inclusion: <***.h>”的解决方案_第4张图片

变成这样
Eclipse中使用JNI编写C代码时出现“Unresolved inclusion: <***.h>”的解决方案_第5张图片

之后需要在后面添加由 Android SDK 对应C语言库的路径
Directory:${ANDROID_NDK_HOME}/platforms/android-SDK版本号/arch-arm/usr/include
SDK版本号跟项目的目标SDK版本相对应
SDK版本可以查看project.properties文件的target参数值
project.properties文件就在Android项目的目录中(一般是最后一个文件)
Eclipse中使用JNI编写C代码时出现“Unresolved inclusion: <***.h>”的解决方案_第6张图片

我的Directory的路径是:${ANDROID_NDK_HOME}/platforms/android-19/arch-arm/usr/include
大家可以根据上面的内容自行查找
填好后点击OK
Eclipse中使用JNI编写C代码时出现“Unresolved inclusion: <***.h>”的解决方案_第7张图片

我记得Eclipse应该会提示你“rebuild”之类的 这个选择同意
这样Eclipse才会使用更改后的设置对你的项目重新进行建立 这样才能解决开头出现的问题

3 测试

测试成功


你可能感兴趣的:(eclipse,jni)