Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javahjni生成的头文件有语法错误-androidndk-eclipse_Android_Java Native Interface_Native_Android Ndk - Fatal编程技术网

javahjni生成的头文件有语法错误-androidndk-eclipse

javahjni生成的头文件有语法错误-androidndk-eclipse,android,java-native-interface,native,android-ndk,Android,Java Native Interface,Native,Android Ndk,Android NDK,我使用以下命令生成jni头 C:\eclipse_workspace\C_Google_FaceDetect\bin>javah -jni -verbose -classpath C:\Android_SDK\platforms\android-10;C:\eclipse_workspace\C_Google_FaceDetect\src;. -d C:\eclipse_workspace\C_Google_FaceDetect\jni c.google.faced

Android NDK,我使用以下命令生成jni头

C:\eclipse_workspace\C_Google_FaceDetect\bin>javah -jni -verbose -classpath C:\Android_SDK\platforms\android-10;C:\eclipse_workspace\C_Google_FaceDetect\src;. -d C:\eclipse_workspace\C_Google_FaceDetect\jni c.google.facedetect.FaceDetect
问题是 尽管我把一切都设置得很好,但还是出现了以下错误

未找到本机Lc/google/facedetect/facedetect;的实现;。译码器

threadid=1:线程以未捕获异常退出(组=0x40018578)

致命异常:main java.lang.UnsatisfiedLinkError:decodeYUV

我试着查找错误,发现在c_google_facedetect_facedetect.h jni头文件中,我实际上有一个语法错误(即使它是生成的)

此外,Eclipse没有说明语法错误是什么,它只在JNIExport行下加下划线并说明语法错误

回答问题的另一个更新 我确实已经检查了库是否正在加载,这是logcat

07-16 13:31:43.257:D/mytag(25188):在_lib之前
07-16 13:31:43.281:D/dalvikvm(25188):尝试加载lib/data/data/c.google.facedetect/lib/libface-detect.so 0x40517808
07-16 13:31:43.281:D/dalvikvm(25188):添加了共享lib/data/data/c.google.facedetect/lib/libface-detect.so 0x40517808
07-16 13:31:43.281:D/dalvikvm(25188):在/data/data/c.google.facedetect/lib/libface-detect.so 0x40517808中未找到JNI_OnLoad,跳过初始化

07-16 13:31:43.281:D/mytag(25188):在_lib

之后,没有语法错误。请检查您是否正在加载您的本机库,以及它是否已成功加载。

Eclipse没有提供更多详细信息,它只是说该行的语法错误Eclipse经常出错。如果没有指向完整的标题集,它与C代码不同,而在最新的ADT版本中,它只是很多时候,Java代码都是随机错误/过时的。看看你是否可以禁用检查,或者剪切它抱怨的内容,保存并清除,然后再粘贴回去。@ChrisStratton谢谢你的评论,所以我应该忽略这个语法错误?但是为什么我总是得到“未发现任何实现错误”呢尝试根据ndk文档从命令行运行nkd build。如果运行正常并生成库,eclipse是错误的(尽管它可能无法更新您的项目,直到您让它停止检查)。但是如果ndk构建失败,那么您可能真的得到了答案。cygwin bash的ndk-build工作得非常好,并生成了.so文件。出现语法错误的java头是由问题中提到的javah命令生成的。谢谢您的回答。在注释中编写代码有点粗糙,如果您可以的话,我更新了问题看一看。谢谢。我已经检查了库是否正在加载并更新了问题,以包括代码和logcat:DImplement JNI_OnLoad,并在其中执行一些可观察的操作,以100%确保添加的库是正确的。同时转储libface-detect.so导出的符号,并将其发布到这里。我如何实现JNI_OnLoad?请建议。唯一必需的部分是返回支持的最小JNI版本。很可能您希望。
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h> /* Header for class c_google_facedetect_FaceDetect */

#ifndef _Included_c_google_facedetect_FaceDetect
#define _Included_c_google_facedetect_FaceDetect
#ifdef __cplusplus extern "C" {
#endif
#undef c_google_facedetect_FaceDetect_CAMERA_WIDTH
#define c_google_facedetect_FaceDetect_CAMERA_WIDTH 480L
#undef c_google_facedetect_FaceDetect_CAMERA_HEIGHT
#define c_google_facedetect_FaceDetect_CAMERA_HEIGHT 320L
/*
* Class:     c_google_facedetect_FaceDetect
* Method:    decodeYUV
* Signature: ([I[BII)V
*/

JNIEXPORT void JNICALL Java_c_google_facedetect_FaceDetect_decodeYUV(JNIEnv *, jobject, jintArray, jbyteArray, jint, jint);

#ifdef __cplusplus }
#endif
#endif
public class FaceDetect extends Activity implements SurfaceHolder.Callback, Camera.PreviewCallback
{
static
    {
        Log.d("mytag", "before_lib");
        System.loadLibrary("face-detect");
        Log.d("mytag", "after_lib");
    }
public static native void decodeYUV(int[] out, byte[] fg, int width, int height);
}