▼スレッド
│
└◇873:Re[2]:cygwinのライブラリを利用するVCアプリ [森] 12/27 09:57
└◇886:Re[3]:cygwinのライブラリを利用するVCアプリ [S.Taka] 01/02
http://www.mars.dti.ne.jp/~sohda/cygwin/java.htmlスレッド一覧
にjniのサンプルがあります。
Widows用のjvmが何でコンパイルされているのか知りませんが、cygwin外のメインからcygwinで作ったdllを呼んでいますので、この真似をすればよいと思う。
森さん、情報ありがとうございます。スレッド一覧
なるほど、確かに早田さんのJNIのサンプルで作るDLLは
cygwin1.dllを使用していますね。サンプルも動く
ことを確認できました。
違いを考えてみると、私の試したやり方は、DLL
の事前ロード(こう言い方でよいのかしら?)で、
おそらくJavaのVMはDLLをLoadLibrary APIを使って
遅延ロードする方法だと思いましたので、次のような
プログラムを作って実験してみましたところうまくいき
ました。(なお、testdll.dllはgccで作ったDLLです)
---------------------------------------------
#include <stdio.h>
#include <windows.h>
int main()
{
HMODULE hLibrary;
void (*pfnTestFunc)(void);
hLibrary = LoadLibrary("testdll.dll");
pfnTestFunc = (void (*)(void))GetProcAddress(hLibrary, "testfunc");
pfnTestFunc();
return 0;
}
---------------------------------------------
なぜ、この方法ならばうまくいくのかが分かっていませんが、
592で書いたような変なやり方をしなくても良いことが分かって
よかったです。ありがとうございました。