我试图实现 JNI。
首先,我创建包含一个本地方法的 Java 类,并使用“javac HelloWorld.java”对其进行编译,然后使用“javah HelloWorld”创建头文件......这是代码
类 HelloWorld { 私人本机无效打印(); 公共静态无效主要(字符串[]参数){ 新的 HelloWorld().print(); } 静止的 { System.loadLibrary("HelloWorld"); } }
HelloWorld.h 文件如下图......
/* 不要编辑这个文件 - 它是机器生成的 */ #包括 /* HelloWorld 类的头文件 */ #ifndef _Included_HelloWorld #define _Included_HelloWorld #ifdef __cplusplus 外部“C”{ #万一 /* * 类:HelloWorld * 方法:打印 * 签名:()V */ JNIEXPORT 无效 JNICALL Java_HelloWorld_print (JNIEnv *,作业); #ifdef __cplusplus } #万一 #万一
在此之后我创建了 HelloWorld.c 文件......这是代码
#包括 #包括 #include "HelloWorld.h" JNIEXPORT 无效 JNICALL Java_HelloWorld_print(JNIEnv *env, jobject obj) { printf("Hello World!\n"); 返回; }
然后在 Visual Studio 2008 中使用下面提到的命令编译我的 HelloWorld.c 文件
cl -Ic:\java\jdk\include -Ic:\java\jdk\include\win32 -MD -LD HelloWorld.c -FeHelloWorld.dll
它编译得很好,并且在“HelloWorld.class”文件所在的同一个 bin 文件夹中创建了 dll 和其他文件。但是在使用“java HelloWorld”命令运行 java 文件时发生 msvcr90.dll 文件丢失错误......我试图重新安装我的 JDK 但仍然存在同样的问题
我应该怎么办 ...