2011-06-15 57 views
0

我正在通過Windows中的Java/JNI調用本地方法。基本沒問題。我的問題是我不知道其中一種方法的確切方法簽名。我有它的名字。從Java的Native方法獲取方法簽名

有誰知道一種方法從Java端從加載的DLL中獲取導出的方法和簽名?

+0

難道你不知道你要調用哪種方法直到運行時?我想這是你想要在本地文件中做的事情.dll – antlersoft 2011-06-15 22:32:58

+0

如果你在運行時知道該方法的正確簽名,你會怎麼做?很難用這種方式調用一個函數(除非你想創建所有可能的參數排列......沒有很好的概念)。我不明白你爲什麼不能從導出表中查找sig並使用它? – Voo 2011-06-15 22:43:53

+0

你想在Java端創建本地方法,還是你已經有權訪問Java端的本地接口?如果你確實可以在整個反射中查詢所有的java重載方法。 – Zecas 2012-05-16 17:01:23

回答

0

不,你從JNI命名約定中得到的所有內容都是導出函數的名稱 - 甚至在庫不使用RegisterNatives()的情況下也是如此。你也知道前兩個參數是指針。從這裏開始,您可以像對其他未記錄的導出函數一樣,嘗試反彙編函數。