私はJavaが初めてで、Googleとstackoverflowでこの質問を検索し、いくつかの投稿を見つけましたが、それでも理解できません。
Java から DLL ライブラリ (C++) メソッドを使用したいと考えています。この目的のためにJNAを使用します。JNA は私のライブラリを見つけましたが、私のメソッドを見つけることができません:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Error looking up function 'LoadCurrentData': The specified procedure could not be found.
私のコード:
package javaapplication1;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
import com.sun.jna.Pointer;
public class JavaApplication1 {
public interface LibPro extends Library {
LibPro INSTANCE = (LibPro) Native.loadLibrary(
(Platform.isWindows() ? "LibPro" : "LibProLinuxPort"), LibPro.class);
public short LoadCurrentData();
}
public static void main(String[] args) {
LibPro sdll = LibPro.INSTANCE;
sdll.LoadCurrentData(); // call of void function
}
}
Depency Walker Tool を使用して DLL を調べたところ、関数名に接頭辞と接尾辞が付いていることがわかりました。_LoadCurrentData@0
返信ありがとうございます。
PS http://tutortutor.ca/cgi-bin/makepage.cgi?/articles/rjna (リスト 6) で動作する良い例を見つけました。