3

我是使用 ada 语言和 GPS 的初学者。我似乎找不到任何可靠的教程来帮助学习 ada 或 GPS,但这不是我的问题。

我尝试了各种简单的程序,比如这个:

with Win32.crt.Math;
with Interfaces.C;

procedure sqrt is
X : Interfaces.C.Double;
begin
   X := Win32.crt.Math.sqrt(x => 4.0) ;
end sqrt;

我尝试了其他类似简单的方法,并在网上找到了其他更复杂的方法,我真的只得到了一个工作。

无论如何,当我尝试构建时出现此错误:

gnatmake -d -PC:\Users\bqw3960\Desktop\GPS2012\2-two\sqrt.gpr sqrt.adb

gnatbind -x sqrt.ali

gnatlink -o c:\users\bqw3960\desktop\gps2012\2-two\sqrt.exe sqrt.ali

C:\GNAT\Bindings\Win32Ada\win32-crt-math.o(.text+0x1a):win32-crt-math.adb: undefined 

reference to `__imp__HUGE'

gnatlink: cannot call C:\GNAT\bin\gcc.exe

gnatmake: *** link failed.

[2013-06-13 10:53:18] process exited with status 4 (elapsed time: 00.51s)

我认为这很简单,但我似乎无法弄清楚。

当我第一次更改某些内容后尝试编译时,有时我也会得到这个:

gcc.exe: unrecognized option `-ws'
4

2 回答 2

2

sqrt.gpr说什么?我刚试过这个,gnatlink步骤说

gnatlink "C:\Documents and Settings\Simon\sqrt.ali" C:\GNAT\2012\lib\win32ada\static\libwin32ada.a -o "C:\Documents and Settings\Simon\sqrt.exe"

这与您的完全不同……并且有效。

sqrt.gpr

with "win32ada";
project Sqrt is
   for Main use ("sqrt.adb");
end Sqrt;
于 2013-06-13T17:24:47.847 回答
0

这是因为您的 sqrt 程序仍在运行,并且您正在尝试编译解决方案并同时运行您的程序。停止程序的执行,然后尝试编译。它应该按预期工作。

于 2017-03-06T08:12:07.123 回答