gpt4 book ai didi

c++ - 你能从 Ada 调用 C++ 函数吗?

转载 作者:太空狗 更新时间:2023-10-29 19:45:10 24 4
gpt4 key购买 nike

你能从 Ada 调用 C++ 函数吗?

我想知道是否有一种方法可以直接执行此操作,而无需在 C 中进行实现并编写 C++ 包装器 & 和 Ada 包装器,例如我想去 c++ -> Ada 而不是 c++ -> c -> Ada。

最佳答案

我能给你的唯一真正与编译器无关的答案是,它与在你的系统上从 C 调用 C++ 一样可行。

与 C 非常相似,您必须弄清楚 C++ 例程的名称错位符号,并在 C(在本例中为 Ada)端编写一个链接到该错位名称的绑定(bind)。您可能还必须在 C++ 端做一些事情,比如声明 C++ 函数 extern。

如果您可以将 C++ 函数声明为 extern "C",那就很容易了。只需在 C++ 端执行此操作,并在 Ada 端使用 Ada 的标准 C 导入功能。

例子:

在你的 cpp 中:

extern "C" int cpp_func (int p1, int p2) {
; // Whatever..
}

在您的 .adb 中:

function cpp_func (p1, p2 : Interfaces.C.Int) return Interfaces.C.Int;
pragma Import (C, cpp_func);

...
Result : constant Interfaces.C.Int := cpp_func (1, 2);

关于c++ - 你能从 Ada 调用 C++ 函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/611323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com