3

到目前为止,我只看到了为给定 C 头文件创建 Delphi 代码的工具和一些信息。

但是,在“Delphi first”的情况下,有一个 Delphi 接口声明和一个生成的 DLL,并且没有 C 头文件。是否有工具可以提取必要的信息并为 DLL 构建 C 头文件?

这样的工具在跨语言/跨平台项目中可能会有所帮助并节省时间。例如,使用 C 头文件,使用jnaerator自动创建 Java JNA 绑定代码会更容易。工具链如下所示:

Delphi 源代码 -> 创建 C 头文件 -> 转换为 Java 绑定 -> 从 Java 使用 Delphi DLL

4

2 回答 2

7

Delphi 自己的编译器可以使用 -JPHNE 参数从 .pas 文件中输出 C/C++ 头文件。

于 2009-08-07T08:56:28.427 回答
1

虽然这在理论上可行,但许多 Delphi DLL 将使用诸如寄存器之类的调用约定,不要以标准 C 方式打包记录等。然后还有 RTL 问题、协处理器状态字问题等。

可能大多数 C 编译器可以通过添加一些编译指示来解决这个问题,但我怀疑整个 Java 绑定的东西会吃掉它。

因此,除非在设计 DLL 时考虑到这一点,否则这可能会更频繁地工作。

不过,读取和解析 Delphi 标头并不难。Pascal 比 C 更容易解析和转换。FPC(Free Pascal)有一个 pascal 解析器包,用于其文档工具,可能是可重定向的

于 2009-07-30T14:22:31.313 回答