我一直在尝试用C ++创建一个简单的JNI测试。对于Java,我使用的是Eclipse,对于C ++,我使用的是Visual Studio 2013.我按照StackOverFlow上其他页面上的说明进行操作,但似乎没有任何效果。当我尝试在C ++中列出的java中调用本机方法时发生错误。
感谢您的时间。
#include <jni.h>;
using namespace std;
#ifndef Header
#define Header
JNIEXPORT void JNICALL Java_base_Main_print(JNIEnv *env, jobject obj);
#endif
#include <jni.h>;
using namespace std;
#ifndef Header
#define Header
extern "C" {
JNIEXPORT void JNICALL Java_base_Main_print(JNIEnv *env, jobject obj);
}
#endif
#include "Header.h";
JNIEXPORT void JNICALL Java_base_Main_print(JNIEnv *env, jobject obj) {
printf("This is a JNI tester\n");
//return;
}
package base;
public class Main {
static {System.loadLibrary("JNIHelloWorld");}
public static void main(String args[]){
Main m = new Main();
m.print();
}
public native void print();
}
Exception in thread "main" java.lang.UnsatisfiedLinkError: base.Main.print()V
at base.Main.print(Native Method)
at base.Main.main(Main.java:9)
答案 0 :(得分:3)
尝试#extern&#34; c&#34;围绕JNI代码。{/ p>
通过查看DLL的导出来验证是否未涉及C ++名称修改。