1

我试图实现 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 但仍然存在同样的问题

我应该怎么办 ...

4

1 回答 1

0

此错误与 Visual Studio 中的构建设置有关。您可以选择 CRT 库的静态链接(使用 /MT 选项而不是 /MD)或将 msvcr90.dll 复制到您的 HelloWorld.dll 目录或 %PATH% 中的其他目录。

于 2011-03-02T13:52:50.697 回答