在Eclipse中从C ++调用Ada [英] Calling Ada from C++ in Eclipse

查看:123
本文介绍了在Eclipse中从C ++调用Ada的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图创建一个完全托管在Eclipse中的程序,以C ++开始,并调用Ada。我有GNATBench加载,并可以运行Ada程序没有问题。我不能做的是有一个C ++项目调用一个Ada项目。

I am trying to create a program that is completely hosted in Eclipse, starts in C++, and calls Ada. I have GNATBench loaded, and can run Ada programs without a problem. What I cannot do is have a C++ project call an Ada project.

在狩猎之后,我使用make文件找到并执行了下面的代码。

After hunting around, I found and executed the code shown below using a make file.

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

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

I also found a post stating that my goal has been done.

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 ++调用Ada在Eclipse?

What else do I need to include to have C++ in Eclipse call Ada in Eclipse?

使用MAKE文件:

$ 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代码:

  CPP Code:

//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;
}

Ada代码:

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;


推荐答案

? (IIRC,C ++链接可能会非常严重。)

Have you tried using the External_Name parameter of the Export pragma? (IIRC, C++ linkages can get quite mangled.)

pragma Export
( Convention    => CPP,
  Entity        => Ada_Subroutine,
  External_Name => "Ada_Subroutine "
);

这篇关于在Eclipse中从C ++调用Ada的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆