编辑问题:
尝试使用JNA从Java中使用.dll文件。我成功了:
将.dll添加到系统库 - System.loadLibrary(“NativeLibrary”);
创建一个NativeInterface来映射.dll / .h文件中的函数:
public interface NativeInterface extends Library, StdCallLibrary {
public int methodA(packageURL.NativeInterface.typeDefName n);
public int methodB();
public static class typeDefName implements Structure.ByReference{
public typeDefName(short s) {}
}
}
添加了映射到我的函数名称,因为.dll中的名称是“mangled” - 使用Dependency Walker找到它
Map options = new HashMap();
options.
put(
Library.OPTION_FUNCTION_MAPPER,
new Mapper() {
public String getFunctionName(NativeLibrary library, Method method) {
return super.getFunctionName(library, method);
}
}
);
和
class Mapper implements FunctionMapper{
public String getFunctionName(NativeLibrary library, Method method) {
return "?" + method.getName() + "@@YAHPAEIPAPAXFPAUtypeDefName@@@Z";
}
}
现在(我不确定)是如何创建一个typeDefName的Object来传递给方法A