有时候,自己下载的或者拷贝过来的JNI项目出现莫名错误,通常是找不到头文件,可能解决方案如下:
Removing the C nature:
The only way I could find to reliably removed the C nature from the project was by hand editing Eclipse‘s .project
file for the project.
- Close the Eclipse project (e.g. by quitting Eclipse).
- Open the
.project
file in a text or xml editor. There will be at least 2<buildCommand>
nodes that need to be removed. Remove the<buildCommand>
node with nameorg.eclipse.cdt.managedbuilder.core.genmakebuilder
and all its children, and the<buildCommand>
node with nameorg.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
and its children. Finally, remove the lines:<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
- Completely remove the
.cproject
file.
Adding back the Android Native nature
Reopen the project in Eclipse. Then right-click on the project in the Project Explorer, and from the "Android Tools" contextual menu, choose "Add Native Support...".
参考:http://stackoverflow.com/questions/23122934/eclipse-adt-unresolved-inclusion-jni-h
Android JNI项目提示“Unresolved inclusion: <jni.h>”可能的其他解决方案:
- Paths and Symbols中路径不正确,考虑修改Android.MK文件内容,比如增加空行等(注意Android文件中不需要有LOCAL_C_INCLUDES字段 ,系统会根据LOCAL_SRC_FILES自动添加需要的头文件,否则头文件将出现二义性),重新编译一次项目,Android.MK文件中LOCAL_SRC_FILES所依赖的头文件将会在Project Properties -> C/C++ General -> Paths and Symbols中被自动添加;
- string.h、jni.h等C头文件“Unresolved inclusion”,考虑: NDK Project -> New -> Folder -> Advanced -> Link to alternate location(Linked Folder),添加:D:\ADT\android-ndk-r9d\platforms\android-18\arch-arm\usr\include;
- 考虑:properties--->C/C++ General,关闭Code Analysis功能,解决大部分错误;