在C-ADA绑定应用程序中传递字符串

时间:2016-03-10 08:59:58

标签: c ada

如何将C函数中的字符串传递给ADA中的函数(C-ADA绑定)?

任何例子都会受到赞赏。

2 个答案:

答案 0 :(得分:3)

基本上,你会在Ada一侧创建一个子程序来映射你的C函数:

procedure Foo (C : Interfaces.C.Strings.chars_ptr);
pragma import (C, Foo, "foo");

因此,您可以从Ada访问foo()

该自定义将提供更多Ada友好版本,其中包含:

procedure Foo (C : String) is
   S : Interfaces.C.Strings.chars_ptr := New_String (C);
begin
   Foo (S);
   Free (S);      
end Foo;

另一方面,如果程序是用Ada编写的,你想从C调用它,你可以使用:

procedure Foo (C : Interfaces.C.Strings.chars_ptr);
pragma Export (C, Foo, "foo");

然后从C你可以打电话:

extern void foo(char* c);
foo("bar");

答案 1 :(得分:1)

C不知道与Ada的接口,所以你必须在Ada端进行接口工作。包Interfaces.C.Strings包含将C字符串映射到Ada字符串的操作。