Я использую JNA для доступа к пользовательской DLL, которая, кажется, использует соглашения о вызовах FAR PASCAL, но JVM падает каждый раз, когда я пытаюсь получить к ней доступ.
Руководство по разработке dll гласит:
BOOL FAR PASCAL GetIomemVersion (LPSTR);
И Зависимость Уокер говорит мне:
_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);
Можете ли вы сказать мне, что я делаю неправильно?
Заранее спасибо !!!