我想使用JNA調用DLL函數,但該庫使用非標準C類型。帶有JNA的非標準類型
我可以在wikipedia中看到什麼是mapping between C and Java standard types但是,自定義類型發生了什麼?
我想使用JNA調用DLL函數,但該庫使用非標準C類型。帶有JNA的非標準類型
我可以在wikipedia中看到什麼是mapping between C and Java standard types但是,自定義類型發生了什麼?
你可以在C/C++中編寫一個包裝器。該包裝器包含定義自定義類型的標題。新的包裝函數應該只接受標準類型作爲輸入,並在調用庫函數之前將「翻譯」爲自定義類型,與返回值也可以進行翻譯的方式相同。現在通過JNA從Java調用你的包裝函數。
否則,您可以隨時查看SWIG和JNI。
將Java類映射到體系結構依賴類型是精簡版 JNI庫的目的。將它看作只是一個接口庫,將傳遞給JNI調用的類和類型映射到C或C++程序的類型和類中,因此需要考慮非標準問題。例如,認爲與linux/gcc的接口應該與連接到Windows/VisualStudio有所不同。無論如何,甲骨文公司(前Sun Microsystems公司)的員工已經做了一項很好的工作,試圖隱藏大多數依賴於架構的代碼並儘可能標準化。
我對他們的感激之情從這裏:)
這就好比說「我想購買飛行烤麪包機。我已經看過的所有的商店,並有大量烤麪包機,但什麼是與飛行烤麪包機發生?」那麼,***沒有人出售。***你期望什麼? –
小心提供任何這些有問題的自定義類型?如果你不明白C中的類型是如何定義的,那麼值得複習。 – technomage