这是我的 java 文件,我想为它使用 javah 为 android opencv 应用程序生成头文件。
package com.hosa;
public class edgejava{
static{
System.loadLibrary("edgejava");
}
public native int main(``);
}
生成的头文件如下。
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_hosa_edgejava */
#ifndef _Included_com_hosa_edgejava
#define _Included_com_hosa_edgejava
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_hosa_edgejava
* Method: main
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_com_hosa_edgejava_main
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
eclipse 指出头文件中包含 jni.h 的问题尚未解决。 要采取什么步骤来解决这个问题????
问候, 斯里吉斯
最佳答案
我也遇到了这个问题,所以对于任何偶然发现这个的人......
我从 eclipse 解决了 JNI 问题——你可能已经完成了第 1 步或类似的事情
文件 -> 新建 -> 其他 -> C++ > 转换为 C++ 项目
右键单击项目头 -> 属性 -> C++ 常规 -> 路径和符号
在GNU和GNUC++ Language Entries下添加类似这样的路径
/NDK/Platforms/Android-9/arch-arm/usr/include
您的路径将根据您的设置方式、平台编号等而有所不同。
完成后,在提示时重建索引
关闭您的项目,重新打开它,然后清理构建(或者它可能会立即发生)
在我的例子中,然后找到了 JNI.h,但是 JNIEnv 等仍然无法识别,即使它们在 JNI.h 文件中。
另请注意,对于遇到此问题的任何人,它不会阻止您构建,您只需要关闭有问题的文件,然后打开并关闭您的项目以消除错误(多么痛苦)
更新:已修复!
在 Indigo 的 Above 版本中,从菜单/对话框中执行以下操作
Window->Preferences->C/C++->Index check the "Index Unused Headers"reindex/build if necessary
您可能还需要在包含上方添加“/NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/lib/gcc/arm-linux-androideabi/4.4.3/include”我在上面提到了语言条目。
现在可以识别所有符号 - 希望这对那些让我抓狂的人有所帮助。
关于c - Unresolved inclusion 在 JNI 中的 java header 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10087853/