gpt4 book ai didi

gcc - 创建一个用 Ada 编写的 DLL

转载 作者:行者123 更新时间:2023-12-04 04:46:12 26 4
gpt4 key购买 nike

我正在尝试编写一个只做除法的 Ada DLL。问题是我无法创建 DLL,因为在 Ada 接缝中使用和异常(可能检查分母非零)的除法,因此当我尝试创建 DLL 时给了我以下错误消息:

C:\Programs\GPS\Math>gcc -shared -shared-libgcc -o math.dll division.o
division.o:division.adb:(.text+0x1f): undefined reference to
`__gnat_rcheck_CE_Divide_By_Zero'
collect2.exe: error: ld returned 1 exit status

我的分区包如下所示:
-- division.ads
package Division is
function Div
(A : INTEGER;
B : INTEGER)
return INTEGER;
pragma Export (CPP, Div);
end Division;

--division.adb
package body Division is
function Div(A : INTEGER; B : INTEGER) return INTEGER is
X : INTEGER := A/B;
begin
return X;
end Div;
end Division;

是否可以通过某种方式创建此 DLL?我对 Ada 完全陌生,所以请保持简单。

最佳答案

在 ada 中创建 DLL 的最简单方法是使用 GNAT 项目文件。您可以查看文档 here

您的项目(称为 proj_name.gpr 或您喜欢的任何其他名称)文件如下所示:

library project Proj_Name is
for Library_Name use "math";
for Object_Dir use "obj";
for Source_Dirs use ("src");
for Library_Dir use "lib";
for Library_Interface use ("Division");
for Library_Kind use "dynamic";
end Proj_Name;

假设您的源代码在 src 目录中,您希望在 obj 目录中编译目标文件,并且希望在 lib 目录中输出 dll。

要编译库,您必须使用 gnatmake : gnatmake -P ./proj_name.gpr -p ( -P 表示要使用的项目文件, -p 表示创建任何需要的目录)。

在 linux 上它创建 lib/libmath.so 并且应该在 windows 系统上创建 lib/libmath.dll。

关于gcc - 创建一个用 Ada 编写的 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18141643/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com