2010-11-30 40 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来代替。