FAR PASCAL Calling Conventions を使用しているように見えるカスタム DLL にアクセスするために JNA を使用していますが、アクセスしようとするたびに JVM がクラッシュします。
dll の開発ガイドには次のように書かれています。 BOOL FAR PASCAL GetIomemVersion(LPSTR);
そして Dependency Walker は次のように教えてくれます: _GetIomemVersion@4
public class PebblePrinter {
public interface Iomem extends StdCallLibrary {
boolean _GetIomemVersion(String version);
}
String version;
Iomem INSTANCE;
StdCallFunctionMapper myMapper;
public PebblePrinter() {
HashMap optionMap = new HashMap();
myMapper = new StdCallFunctionMapper();
optionMap.put(Library.OPTION_FUNCTION_MAPPER, myMapper);
INSTANCE = (Iomem)Native.loadLibrary("iomem", Iomem.class,optionMap);
}
public String getIomemVersion(){
INSTANCE._GetIomemVersion(version);
return version;
}
}
C#コードでは、次を使用してうまく機能します
[DllImport("iomem.dll", EntryPoint = "_GetIomemVersion@4")]
public static extern bool GetIomemVersion(IntPtr version);
私が間違っていることを教えてもらえますか?前もって感謝します!!!