2010-11-30 23 views
2

我想從Java中使用某個庫。如何爲一組Pascal庫函數編寫Java JNI包裝?

庫本身是用Pascal編寫的,並編譯成DLL。我已經讀取了所有相關源代碼的訪問權限(它是免費的和開源的),但我不太可能影響對庫的原始代碼的任何更改提議。我有很少的帕斯卡知識或經驗。圖書館本身在一定程度上處理記憶中的結構。 (如果是C語言,函數會返回結構指針,不幸的是我不知道Pascal中的等價名字。)

我想要做的是該庫的Java包裝。我希望能夠撥打這些功能。我已閱讀了許多關於Java Native Interface的教程。有道理的是如何連接這些功能。對我來說沒有意義的是我的意圖是如何處理記憶中的這些結構。

我真的很感激,如果有人可以幫我弄清楚如何做到這一點,或指向我一個很好的資源。到目前爲止,我讀到的大多數內容都排除或掩飾了我所需要的最重要的部分,處理了我記憶中的這些結構。

謝謝大家。

+0

澄清,我期待從該結構中讀取數據,除了將其傳回其他函數調用。 – Ming 2010-11-30 16:33:26

+0

正在使用哪個pascal編譯器來生成DLL?我以前稱C是Delphi編譯的DLL,Delphi是C編譯的DLL,這很簡單。在大多數情況下,Pascal的記錄與C的結構大致相同,只要您選擇正確的類型,以便每個字段的字節數匹配,您應該可以。字符串可以更有趣,因爲有很多種類... – 2010-11-30 17:20:36

回答

1

根據我的經驗,我會避免JNI(太複雜)&使用JNA來代替。