7

这是我的 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

日食指出在头文件中包含 jni.h 尚未解决。要采取什么步骤来解决这个问题????

问候,斯里吉斯

4

4 回答 4

26

我也有这个问题,所以对于任何偶然发现这个的人......

我从 eclipse 中解决了 JNI 问题 - 你可能已经完成了第 1 步或类似的事情

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

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

  3. 在 GNU 和 GNUC++ 语言条目下添加类似的路径

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

    您的路径会有所不同,具体取决于您的设置方式、平台编号等。

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

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

在我的情况下,然后找到了 JNI.h,但 JNIEnv 等仍然无法识别,即使它们在 JNI.h 文件中。

另请注意,对于遇到此问题的任何人,它不会阻止您构建,您只需要关闭有问题的文件,然后打开并关闭您的项目以消除错误(多么痛苦)

更新:已修复!

在 Indigo 的上述版本中,从菜单/对话框中执行以下操作

Window->Preferences->C/C++->Index 检查"Index Unused Headers" reindex/build 如有必要

您可能还需要在我上面提到的包含上方添加“/NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/lib/gcc/arm-linux-androideabi/4.4.3/include”到语言条目。

现在可以识别所有符号 - 希望这可以帮助那些让我发疯的人。

于 2012-04-27T07:19:17.417 回答
1

固定的!

添加到Application.mk
APP_STL := gnustl_shared

转到Properties -> C/C++ General -> Preprocessor Include-> Entries -> Add -> Include Directory -> File System Path,然后选择包含的路径,例如:

${NDK_ROOT}\platforms\android-21\arch-arm\usr\include
${NDK_ROOT}\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi-v7a\include
${NDK_ROOT}\sources\cxx-stl\gnu-libstdc++\4.8\include
${NDK_ROOT}\toolchains\arm-linux-androideabi-4.8\prebuilt\darwin-x86_64\lib\gcc\arm-linux-androideabi\4.8\include

!!!选中"Contains system headers"每个包含路径的复选框。!!!

转到Properties -> C/C++ General -> Preprocessor Include-> Providers -> Check CDT GCC Built-in Compiler Settings -> OK

清理并重建您的项目。

于 2014-12-09T14:03:05.550 回答
0

我对 Android JNI 有同样的问题。我通过将项目指向 NDK 源中的 android jni.h 的包含路径来修复它 请参阅如何从此处下载 NDK: https ://developer.android.com/tools/sdk/ndk/index.html

有关修复的详细信息在这里:

Android 添加原生支持 - 未解决的 jni.h、android/log.h 等

于 2014-04-28T20:21:46.270 回答
-3

就我而言,我只是关闭并打开项目,然后错误消失了。

于 2014-08-20T04:55:35.100 回答