GPS中的Ada编程

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'

一个简单的“Hello World”程序是否能编译并链接?看起来似乎是Win32绑定安装的问题。 - Marc C
是的,我只写了一两个可用的程序,一个是“Hello World”,另一个是带有get(x)和while循环的“Hello World”,让用户猜数字。但这就是我所能做到的了。 - Ben
从亚马逊购买一本旧的Ada 95书籍,包括运费在内只需5美元。如果您想进行深入研究,您将需要Barnes关于Ada 2005的书籍,这是必不可少的。 - Rick
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;

我的看起来一样,只是没有第一行,我尝试将其添加进去,但它说“win32ada”是一个未知的项目文件。 - Ben
我正在使用Windows XP。当我安装从Libre网站获取的win32ada时,它说找不到可用的Ada编译器,并要求我浏览到一个位置,提供了C:\GNATPRO。我将其更改为C:\GNAT\2012,然后安装在那里(我看到你们的等效位置是C:\GNAT - 你们的编译器二进制文件位于C:\GNAT\bin,我的位于C:\GNAT\2012\bin),包括一个win32ada.gpr在GNAT期望找到它的位置。没有Bindings\Win32Ada目录的痕迹;我想知道你们的是怎么来的? - Simon Wright

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接