【发布时间】:2017-06-08 08:22:39
【问题描述】:
最近,我遇到了一个只使用 Ada 的安全关键系统。系统提供了大约 3 个包,每个包中大约有 200-300 个函数作为源。
我需要在另一个完全用 C/C++ 编写的软件系统(非常漂亮和简洁)中访问几乎所有这些功能。
目标:我需要将这些 Ada 函数公开给 C/C++。
我知道我可以使用pragma Export()构造导出函数和接口。C包在C和Ada之间转换参数。
但是,我想知道是否有更简单或更可扩展的方法来做到这一点?
- 也许会以某种方式暴露整个包?
- 或者开发一个 RPC 架构?
- 或者使用创建 C/C++ 声明和类型转换的工具?
如果有类似经验的人能指出我正确的方向,那真的很有帮助。
记住我不是在寻找Ada to C translator
【问题讨论】:
-
pragma Export 或相关方面(如果您正在使用 Ada 2012)是您正在寻找的,至少根据我对您目标的理解。您可以编写一个脚本来为您生成这些导出;这就是我要做的。
-
对不起,我的意思是 C 或 C++ 都可以。最好是 C++。
-
@PatrickKelly :您能否详细说明您是如何使用该脚本的?我以前从未使用过脚本向 C 公开 ADA 函数。或者可能共享一个简单的脚本。谢谢
-
@Olaf 从什么时候开始
pragma export不是标准的 Ada?可以在当前标准中找到它:ada-auth.org/standards/aarm12_w_tc1/html/AA-J-15-5.html -
您可能会在comp.lang.ada 上获得更多关注。在这里,问题有被关闭的危险:help center。也就是说,由于现有的 Ada 与安全相关,您可能不会在接口中发现诸如标记类型、访问子程序、泛型之类的尴尬事情。如果没有人想出一个工具,我会考虑制作一个基于 ASIS 的工具:我的 ASIS2XML(版本已过时,获取代码),或者有一个用于 GNAT(
gnat2xml,由 @ 支持) 987654329@) 可从他们的 ASIS 存档中构建。