Ada DLL を作成するときに Ada 名が壊れないようにする簡単な方法はありますか?
これが私の.adbコードです
with Ada.Text_IO;
package body testDLL is
procedure Print_Call is
begin
Ada.Text_IO.Put_Line("Hello World");
end Print_Call;
function Add_Nums(A,B : in Integer) return Integer is
begin
return A + B;
end Add_Nums;
end testDLL;
私の .ads
package testDLL is
procedure Print_Call;
pragma export (dll, Print_Call, "Print_Call");
function Add_Nums(A,B : in Integer) return Integer;
pragma export (dll, Add_Nums, "Add_Nums");
end testDLL;
私のパイソン
import ctypes
TestDLL = ctypes.WinDLL ("libTestDLL.dll")
Print_Call = getattr(TestDLL, "Print_Call@0")
Print_Call()
関数名の末尾に「@0」を追加する必要があることがわかりますが、同じコードを別のコンパイラに移動すると、これが変わるようです。これは私にいくつかの問題を引き起こしています。標準のマングリング形式か、マングリングをまとめて削除する方法が必要です。