проблема создания собственного интерфейса Java

Я пробовал внедрить JNI.

сначала я создаю класс Java, содержащий один собственный метод, и компилирую его с помощью "javac HelloWorld.java", а затем создаю файл заголовка с помощью "javah HelloWorld" ... вот код

class HelloWorld {
     private native void print();
     public static void main(String[] args) {
         new HelloWorld().print();
     }
     static {
         System.loadLibrary("HelloWorld");
     }
 }

Файл HelloWorld.h выглядит так, как показано ниже .....

/* DO NOT EDIT THIS FILE - it is machine generated */
#include 
/* 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

после этого я создал файл HelloWorld.c ... вот код

 #include 
 #include 
 #include "HelloWorld.h"

 JNIEXPORT void JNICALL 
 Java_HelloWorld_print(JNIEnv *env, jobject obj)
 {
     printf("Hello World!\n");
     return;
 }

а затем скомпилируйте мой файл HelloWorld.c, используя указанную ниже команду в Visual Studio 2008

cl -Ic: \ java \ jdk \ include -Ic: \ java \ jdk \ include \ win32 -MD -LD HelloWorld.c -FeHelloWorld.dll

он компилируется довольно хорошо, и dll и другие файлы создаются в той же папке bin, где находится файл "HelloWorld.class". но при запуске файла java с помощью команды "java HelloWorld" возникает ошибка отсутствия файла msvcr90.dll .... Я попытался переустановить JDK, но проблема все еще та же

что я должен делать ...


person Gagan    schedule 02.03.2011    source источник


Ответы (1)


Эта ошибка связана с настройками сборки в Visual Studio. Вы можете выбрать статическую ссылку на библиотеку CRT (используйте параметр / MT вместо / MD) или скопируйте msvcr90.dll в каталог с HelloWorld.dll или другой каталог в% PATH%.

person Eugene Burtsev    schedule 02.03.2011
comment
@peter Спасибо, Питер ... это помогает - person Gagan; 04.03.2011