我正在尝试创建一个完全托管在 Eclipse 中、以 C++ 启动并调用 Ada 的程序。我加载了 GNATBench,可以毫无问题地运行 Ada 程序。我不能做的是让 C++ 项目调用 Ada 项目。
四处寻找后,我找到了下面显示的代码并使用 make 文件执行了它。
http://www.pegasoft.ca/resources/boblap/book.html
我还发现了一个帖子,说明我的目标已经完成。
要让 Eclipse 中的 C++ 调用 Eclipse 中的 Ada,我还需要包含什么?
使用制作文件:
$ c++ -c test.cc
$ gnatgcc -c test_subr
$ gnatbind -n test_subr
$ gnatgcc -c b~test_subr
$ gnatlink -o main test.o test_subr.ali --link=c++
$ ./main
CPP代码:
//main.cc
#include extern "C" void adainit(void);
#include extern "C" void adafinal(void);
#include extern "C" void ada_subroutine(void);
int main(int argc, char **argv)
{
puts("C++ main");
adainit();
ada_subroutine();
adafinal();
puts("C++ done");
return 0;
}
阿达代码:
package Test_Subr is
procedure Ada_Subroutine;
pragma export(CPP, Ada_Subroutine);
end Test_Subr;
with Ada.Text_IO;
use Ada.Text_IO;
package body Test_Subr is
procedure Ada_Subroutine is
begin
put("IN ADA");
end Ada_Subroutine;
end Test_Subr;
最佳答案
您是否尝试过使用 Export pragma 的 External_Name 参数? (IIRC、C++ 链接可能会变得非常困惑。)
pragma Export
( Convention => CPP,
Entity => Ada_Subroutine,
External_Name => "Ada_Subroutine "
);
关于c++ - 在 Eclipse 中从 C++ 调用 Ada,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10180040/