[英]UnsatisfiedLinkError in JNI Code
我正在嘗試創建一個簡單的JNI項目來獲取JNI,但我一直遇到這個錯誤:
Exception in thread "main" java.lang.UnsatisfiedLinkError: HPAProgram.sayHello()
我還沒有太多代碼,所以我可以在這里粘貼大部分代碼。
我運行以下命令:
javac HPAProgram.java
javah HPAProgram
cc -v -c -fPIC -I/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers/ HPAProgram.c++ -o libHPAProgram.o
libtool -dynamic -lSystem libHPAProgram.o -o libHPAProgram.dylib
LD_LIBRARY_PATH=.
export LD_LIBRARY_PATH
java HPAProgram
HPAProgram.java
public class HPAProgram {
public native void sayHello();
public static void main(String[] args) {
System.loadLibrary("HPAProgram");
System.out.println("In java main");
HPAProgram s = new HPAProgram();
s.sayHello();
}
}
HPAProgram.c ++:
/*
* HPAProgram.c++
*
* Created on: Feb 4, 2014
* Author: zalbhathena
*/
//#include <jni.h>
#include <stdio.h>
#include "HPAProgram.h"
JNIEXPORT void JNICALL Java_JniSample_sayHello (JNIEnv *env, jobject obj) {
printf("Hello World!\n");
}
HPAProgram.h:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HPAProgram */
#ifndef _Included_HPAProgram
#define _Included_HPAProgram
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HPAProgram
* Method: sayHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HPAProgram_sayHello
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
它說
java.lang.UnsatisfiedLinkError:HPAProgram.sayHello()
你有:
JNIEXPORT void JNICALL Java_JniSample_sayHello(JNIEnv * env,jobject obj)
和
JNIEXPORT void JNICALL Java_HPAProgram_sayHello(JNIEnv *,jobject);
修復.c文件以符合.h文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.