pax*_*977 5 c c++ cross-language ada
虽然我在HS期间使用Pascal 2 - 3年,但我是一个完整的Ada新手.
IIRC,可以从C/C++调用Pascal编译函数.是否可以从C++调用Ada编写的过程和函数?
小智 5
下面是一个使用 g++/gnatmake 5.3.0 的例子:
注意:在 C++ 和 Ada 之间传递数据时要小心
ada_pkg.ads
package Ada_Pkg is
procedure DoSomething (Number : in Integer);
pragma Export (C, DoSomething, "doSomething");
end Ada_Pkg;
Run Code Online (Sandbox Code Playgroud)
ada_pkg.adb
with Ada.Text_Io;
package body Ada_Pkg is
procedure DoSomething (Number : in Integer) is
begin
Ada.Text_Io.Put_Line ("Ada: RECEIVED " & Integer'Image(Number));
end DoSomething;
begin
null;
end Ada_Pkg;
Run Code Online (Sandbox Code Playgroud)
主程序
/*
TO BUILD:
gnatmake -c ada_pkg
g++ -c main.cpp
gnatbind -n ada_pkg
gnatlink ada_pkg -o main --LINK=g++ -lstdc++ main.o
*/
#include <iostream>
extern "C" {
void doSomething (int data);
void adainit ();
void adafinal ();
}
int main () {
adainit(); // Required for Ada
doSomething(44);
adafinal(); // Required for Ada
std::cout << "in C++" << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
参考: