2013-04-18 63 views
1

一个全球参考本地库我想用有方法是这样的:创建JNA

extern unsigned long write(void); 

它会写,但需要在几个全局变量定义:

short int Addr; //the starting address it write to; 
short int Length; //the length of the writing; 
void * data; //the data it will write; 

我知道在JNA中,NativeLibray有加载在本地库中定义的全局引用的方法,但它似乎不是它在这里所需要的。我实际上需要声明上面的全局变量并写入它们,这样write()方法才能正常工作。

任何有关如何在JNA中实施此建议的建议?

谢谢。

回答

0

为什么不把你的“写”方法封装在另一个你可以通过Java/JNA调用的方法中。在那里,你首先设置这些全局变量,然后调用真正的变量。

+0

好吧,这不是“我的”写作方法,我不想碰C,除非JNA没有解决方案。 – Wudong 2013-04-18 06:15:27

1

所以很多游戏黑客不愿进入肮脏的细节。

NativeLibrary提供对共享库导出的全局变量的地址的访问。

NativeLibrary lib = NativeLibray.getInstance("mylib"); 
Pointer paddr = lib.getGlobalVariableAddress("Addr"); 
paddr.setInt(0, 1234);