c++ - 在 Eclipse 中从 C++ 调用 Ada

标签 c++ eclipse eclipse-plugin eclipse-cdt ada

我正在尝试创建一个完全托管在 Eclipse 中、以 C++ 启动并调用 Ada 的程序。我加载了 GNATBench,可以毫无问题地运行 Ada 程序。我不能做的是让 C++ 项目调用 Ada 项目。

四处寻找后,我找到了下面显示的代码并使用 make 文件执行了它。

http://www.pegasoft.ca/resources/boblap/book.html

我还发现了一个帖子,说明我的目标已经完成。

http://blogs.windriver.com/parkinson/2009/10/yesterday-adacore-announced-the-release-of-gnatbench-231-its-ada-integrated-development-environment-eclipse-plugin-which.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/

相关文章:

java - 如何从命令提示符运行已完成的 Selenium-RC 项目?

c++ - 根据 Qt 版本添加条件宏

c++ - 在构造函数中将枚举作为参数传递

c++ - 使用命名空间避免名称冲突

PHPUnit Eclipse 配置: No Tests Found

eclipse - 强制在 Eclipse 中使用备用 POM 文件

java - 如何以编程方式调用自定义导航器中节点上的 `Refresh` 功能?

eclipse - 使用 Tomcat 和 Eclipse 开发 Portlet

Facelets 文件的 Eclipse 插件

c++ - 轮廓字体上下颠倒 - glOrtho() 设置不正确