Ada制作DLL

1151 ワード

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