Ada制作DLL

我们可以使用gnatdll工具来制作动态链接库。

先贴一个最为简单的代码:

package  myLib is

    -- C方式导出
    function add(a,b:integer) return integer is (a+b);
    pragma export(c,add,"add");

    -- stdcall方式导出
    function sub(a,b:integer) return integer is (a-b);
    pragma export(stdcall,sub,"sub");


end myLib;

输出定义文件需要手工完成。

mylib.def文件内容示例如下:

LIBRARY  "myLib"

EXPORTS

add

sub@8

接着我们用如下命令进行制作

gcc -c myLib.ads

gnatdll -e mylib.def  -d myLib.dll    myLib.ali

gnatdll命令中,要用ali文件,用o文件容易找不到某些函数定位。

接着进行调用测试:

with Ada.Integer_Text_IO;
procedure test is

    pragma linker_options("mylib.dll");

    function "+"(a,b:integer) return integer with Import,external_name=>"add";

    function "-"(a,b:integer) return integer with Import,Convention=>stdcall,external_name=>"sub";

begin

   ada.integer_Text_IO.Put(1+2);
   
   ada.integer_Text_IO.Put(10-6);


end test;

输出:

>test
          3          4
>Exit code: 0

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值