- PR -

JNIがうまくいきません。

1
投稿者投稿内容
Javaスターター
ベテラン
会議室デビュー日: 2004/06/14
投稿数: 67
投稿日時: 2004-09-06 11:06
初心者ながらJNIを使ってみましたが、うまくいきませんでした。
以下のようなソースでJNIを使ったプログラムを作成したのですが、
Hello.dllファイルをMain.classファイルのフォルダにコピーして
DOSでjava Mainを実行したところ、以下のようなエラーが出ます。

Exception in thread "main" java.lang.UnsatisfiedLinkError: Write
at Main.Write(Native Method)
at Main.main(main.java:

クラスファイルの作成、dllの作成も無事うまくいっているのに、
どうしてこのようなエラーがでるのでしょうか。
すいませんが、教えていただくようよろしくお願いいたします。



/** Main.java **/
public class Main {
public static void main(String arg[]) {
System.loadLibrary("Hello");
Write();
}
static public native void Write();
}


/** Main.h **/
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Main */

#ifndef _Included_Main
#define _Included_Main
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: Main
* Method: Write
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_Main_Write
(JNIEnv *, jclass);

#ifdef __cplusplus
}
#endif
#endif


/** Hello.cpp **/
#include <stdio.h>
#include "..\Main.h"
JNIEXPORT void JNICALL Java_Main_write (JNIEnv *, jclass) {
printf("Hello\n");
}


H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2004-09-06 11:33
おそらく、ファンクション名のWが小文字になっています。Java_Main_write ではなくて Java_Main_Write です。(ただのタイプミスならごめんなさい)
コード:
/** Hello.cpp **/
#include <stdio.h>
#include "..\Main.h"
JNIEXPORT void JNICALL Java_Main_write (JNIEnv *, jclass) {
  printf("Hello\n");
} 


Javaスターター
ベテラン
会議室デビュー日: 2004/06/14
投稿数: 67
投稿日時: 2004-09-06 11:46
H2様ありがとうございました。
解決できました。
またよろしくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)