将jna与FAR PASCAL自定义dll一起使用
我正在使用JNA访问一个自定义DLL,它似乎在使用FAR PASCAL调用约定,但每次我尝试访问它时JVM都会崩溃 dll的开发指南中说: BOOL-FAR-PASCAL-GetIomemVersion(LPSTR) 依赖沃克告诉我: _GetIomemVersion@4将jna与FAR PASCAL自定义dll一起使用,dll,jna,Dll,Jna,我正在使用JNA访问一个自定义DLL,它似乎在使用FAR PASCAL调用约定,但每次我尝试访问它时JVM都会崩溃 dll的开发指南中说: BOOL-FAR-PASCAL-GetIomemVersion(LPSTR) 依赖沃克告诉我: _GetIomemVersion@4 public class PebblePrinter { public interface Iomem extends StdCallLibrary { boolean _GetIomemVersion
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);
你能告诉我我做错了什么吗?
提前感谢 问题解决了
我刚刚使用了错误的参数。。
GetIomemVersion需要一个指针
boolean _GetIomemVersion(Pointer version);
public String getIomemVersion(){
Memory m = new Memory(1024);
Pointer x = m.getPointer(0);
INSTANCE._GetIomemVersion(x);
return x.getString(0);
}