如何将实例化的泛型函数导出到 C
How to export instantiated generic function to C
我创建了一个具有导出和约定方面的通用函数。然后我实例化了这个函数,但它最终出现在我的库中,带有 'r' 后缀。为什么会发生这种情况,我该如何解决?
例如:
generic
I : int;
function Test_Generic return int
with Export => True, Convention => C;
function Test_Generic return int is
begin
return I;
end;
function Test is new Test_Generic (I => 5);
-- In library this function has name testr
我无法完全解决问题,但这里有一个解决方法,将外部和约定方面移动到通用实例的包装器中:
generic
I : int;
function Test_Generic return int;
function Test_Generic return int is
begin
return I;
end;
function Test_G is new Test_Generic (I => 5);
function Test return int
with Export, Convention => C;
function Test return int
is begin return Test_G; end Test;
有点麻烦,但似乎可行。
一个更简单的答案是将所有方面移动到通用实例,但也添加一个 External_Name 方面:
function Test is new Test_Generic (I => 5)
with Export, Convention => C, External_Name => "test";
不明白这里为什么要External_Name,Export还不行
我创建了一个具有导出和约定方面的通用函数。然后我实例化了这个函数,但它最终出现在我的库中,带有 'r' 后缀。为什么会发生这种情况,我该如何解决?
例如:
generic
I : int;
function Test_Generic return int
with Export => True, Convention => C;
function Test_Generic return int is
begin
return I;
end;
function Test is new Test_Generic (I => 5);
-- In library this function has name testr
我无法完全解决问题,但这里有一个解决方法,将外部和约定方面移动到通用实例的包装器中:
generic
I : int;
function Test_Generic return int;
function Test_Generic return int is
begin
return I;
end;
function Test_G is new Test_Generic (I => 5);
function Test return int
with Export, Convention => C;
function Test return int
is begin return Test_G; end Test;
有点麻烦,但似乎可行。
一个更简单的答案是将所有方面移动到通用实例,但也添加一个 External_Name 方面:
function Test is new Test_Generic (I => 5)
with Export, Convention => C, External_Name => "test";
不明白这里为什么要External_Name,Export还不行