2013-07-31 16 views
0

我有意創建一個Java應用程序以使用dll中的方法。執行JNI應用程序以使用dll方法而不執行

對於我一直在閱讀的內容,簡而言之,使用JNI的過程包括:在Java中聲明本地方法,生成.h文件,然後用實現編碼ac或cpp文件以創建一個DLL。

但我的問題是,我有一個DLL,它是一個很多方法的大型圖書館。我知道這些方法的接口。但我不想實施它們。我想使用DLL來避免使用這些方法。我明白,使用它作爲一個DLL可能會提高性能。但在我的情況下,我想使用它只是因爲我想使用由另一方做的代碼。

我錯過了什麼? 是否可以使用JNI或任何其他Java接口來使用dll方法,但跳過編碼部分?

非常感謝。

回答

2

如果沒有問題,使用lib目錄來尋找我會建議使用JNA。它有一個更靈活的dll訪問API。至少我傾向於使用它。

,你可以在這裏找到例子: https://github.com/twall/jna/tree/master/www 因此,你只需要擁有加載DLL和一些接口,你剛剛從Java調用,你會得到你所需要的。

也許這個博客也可以幫助你:http://jnaexamples.blogspot.de/2012/03/java-native-access-is-easy-way-to.html

+0

非常感謝。我會看看博客和JNA網站。 – pablof

+1

查看JNAerator創建的內容也很有意義。它從.h文件生成JNA類。但是,通常最好將.h文件簡化爲僅包含需要使用的結構和函數。 –

+0

@Tom Blodget。謝謝。我也會考慮這個。 – pablof

1

可以

  • 使用JNA approach。 JNA的優點是不需要本地代碼 - 您想要封裝的DLL的方法是動態調用的。

  • 實現了一個包裝器DLL,它實現了JNI方法,然後從你的DLL中調用真正的方法。這是正確的做法,如果你可以,以任何理由,不使用JNA庫(例如,由於許可限制)

+1

謝謝。我會使用JNA的方法,記住我可以在最壞的情況下使用包裝。 – pablof

相關問題