JNI Hello World 不满意的链接错误
这是我第一次尝试JNI。我的最终目标是让当前在机器上运行的所有任务,但即使是一个简单的示例也需要运行。当我尝试执行我的主程序时,我一直收到此错误。我已经提供了我简单的Java主程序,生成的头文件和错误。
我不知道这个DLL可能依赖于什么。它最初引用了我找到并放入system32(msvcr90.dll)的DLL。
这是我用来编译C代码的命令,它产生了DLL,OBJ,LIB,EXP和清单文件。
cl -I“C:\Program Files\Java\jdk1.6.0\include” -I“C:\Program Files\Java\jdk1.6.0\include\win32” -MD -LD HelloWorld.c -FeHelloWorld.dll
class HelloWorld {
private native void print();
public static void main(String[] args) {
new HelloWorld().print();
}
static {
System.load("C:\\temp\\HelloWorld.dll");
}
}
#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"
JNIEXPORT void JNICALL
Java_HelloWorld_print(JNIEnv *env, jobject obj)
{
printf("Hello World!\n");
return;
}
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */
#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: print
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_print
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
java.lang.UnsatisfiedLinkError: C:\temp\HelloWorld.dll: A dynamic link library (DLL) initialization routine failed
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.load0(Unknown Source)
at java.lang.System.load(Unknown Source)
at HelloWorld.<clinit>(HelloWorld.java:7)
Exception in thread "main"