Error: cannot generate code for file random.ads (package spec)
Error: cannot generate code for file random.ads (package spec)
我无法在 GPS 中编译(运行)我的 Ada 代码。我收到一个错误:
cannot generate code for file random.ads (package spec)
gprbuild: *** compilation phase failed
random.ads 文件如下所示:
with Ada.Numerics.Float_Random;
use Ada.Numerics.Float_Random;
package random is
protected randomOut is
procedure Inicializal;
entry Parcel(
randomout: out Positive;
from: in Positive;
to: in Positive := 1
);
private
G: Generator;
Inicializalt: Boolean := False;
end randomOut;
task print is
entry write(what: in String);
end print;
end random;
.gpr 文件如下所示:
project Default is
package Compiler is
for Default_Switches ("ada") use ("-g", "-O2");
end Compiler;
for Main use ("hunting.adb");
end Default;
这是什么意思?我该如何解决?谢谢!
您无法为包规范生成代码。
这是正常的,也是意料之中的。
您可以编译包主体,random.adb,并为其生成代码 - 但通常没有必要。
只需编译您的主程序(如果您进行单元测试,则编译您的测试工具)并让编译器找到它的所有依赖项。
(如果不能,要么是你还没有写,要么是找错了地方。如果你需要这方面的帮助,请在问题中添加相关信息)。
问题是由
引起的
task print is
entry write(what: in String);
end print;
由于任何任务都被指定为主体,因此编译器难以决定:它在规范文件中有一个必须编译的主体,而规范文件中没有。将任务移动到 .adb 文件解决了问题。
我无法在 GPS 中编译(运行)我的 Ada 代码。我收到一个错误:
cannot generate code for file random.ads (package spec)
gprbuild: *** compilation phase failed
random.ads 文件如下所示:
with Ada.Numerics.Float_Random;
use Ada.Numerics.Float_Random;
package random is
protected randomOut is
procedure Inicializal;
entry Parcel(
randomout: out Positive;
from: in Positive;
to: in Positive := 1
);
private
G: Generator;
Inicializalt: Boolean := False;
end randomOut;
task print is
entry write(what: in String);
end print;
end random;
.gpr 文件如下所示:
project Default is
package Compiler is
for Default_Switches ("ada") use ("-g", "-O2");
end Compiler;
for Main use ("hunting.adb");
end Default;
这是什么意思?我该如何解决?谢谢!
您无法为包规范生成代码。
这是正常的,也是意料之中的。
您可以编译包主体,random.adb,并为其生成代码 - 但通常没有必要。
只需编译您的主程序(如果您进行单元测试,则编译您的测试工具)并让编译器找到它的所有依赖项。
(如果不能,要么是你还没有写,要么是找错了地方。如果你需要这方面的帮助,请在问题中添加相关信息)。
问题是由
引起的 task print is
entry write(what: in String);
end print;
由于任何任务都被指定为主体,因此编译器难以决定:它在规范文件中有一个必须编译的主体,而规范文件中没有。将任务移动到 .adb 文件解决了问题。