是否可以从C头文件自动生成接口单元?特别是,我想包装HDF5库,如果能够避免手动编写接口单元就太好了。
是否可以从C头文件自动生成接口单元?特别是,我想包装HDF5库,如果能够避免手动编写接口单元就太好了。
自由的Pascal包括 H2PAS 工具。
h2pas 试图将C头文件转换为Pascal单元。它可以处理大多数C头文件中的C结构,并试图将它们翻译成对应的Pascal代码。
#define uglymacro 1,2,3,4
还有一个更为普遍的情况是:
SCARYAPIMACRO void func(int c);
SCARYAPIMACRO通常是一个宏,它测试操作系统定义以选择正确的调用约定和正确的操作系统/架构。
但这并不意味着工具不是真正的时间节省者。但结果更多是半自动化的,我对h2pas有最多和最好的经验。
我已经翻译了很多Windows头文件(包括FPC的commctrl,其中每几行都有一个sendmessage宏)。
我通常会编写一个小的Pascal程序,基于行扫描源代码,并使用启发式算法将其分成大部分同质的部分(所有结构或常量、宏、过程声明等)。然后我查看源代码并经常进行全局替换。
只有在此之后,我才将其通过翻译器运行,该过程通常是迭代的(优化分离、进行全局替换、尝试翻译,如果失败,则再次尝试等)。
不幸的是,这个过程需要对C语言有很好的掌握,包括#pragma内容。
Drivers
文件夹下找到它。它可能作为翻译的第一步。 - LU RD