c - Unresolved inclusion 在 JNI 中的 java header 中

标签 c opencv java-native-interface

这是我的 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 步或类似的事情

  1. 文件 -> 新建 -> 其他 -> C++ > 转换为 C++ 项目

  2. 右键单击项目头 -> 属性 -> C++ 常规 -> 路径和符号

  3. 在GNU和GNUC++ Language Entries下添加类似这样的路径

    /NDK/Platforms/Android-9/arch-arm/usr/include

    您的路径将根据您的设置方式、平台编号等而有所不同。

    完成后,在提示时重建索引

  4. 关闭您的项目,重新打开它,然后清理构建(或者它可能会立即发生)

在我的例子中,然后找到了 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/

相关文章:

c++ - 如何打印在 Yacc/Bison 中看到的任何内容?

opencv - RGB颜色直方图的特征维度?

java - 不支持的 JNI 版本 0xFFFFFFFF

java - 从其他类文件引用匿名内部类

android - 如何将 WCHAR_T* 转换为 jstring?

使用MSVS2012和两个 ";;"编译C代码

c - 来自 ISR 和非 ISR 上下文的原子禁用和恢复中断 : may it be different on some platform?

安卓,OpenCV : Detect color & Draw Contours

python - OpenCV + python——从视频文件中抓取帧

c - 如何在 C 中将 char* 复制到 char* 数组