2013-06-13 4 views
3

Я новичок, использующий как язык ады, так и GPS. Кажется, я не могу найти твердых обучающих программ, которые помогут узнать ада или 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' 
+0

Простая старая [Hello World] (http://en.wikipedia.org/wiki/Ada_%28programming_language%29#.22Hello.2C_world.21.22_in_Ada) компиляция программы и ссылка? Это похоже на проблему с установкой привязок Win32. –

+0

да, это так, я получил только одну или две рабочие программы, мир привет, а затем мир привет с get (x) и цикл while, чтобы угадать человека, вот и все, что мне удалось получить, хотя – Ben

+0

Получите одну из старых книг Ada 95, которые используются в Amazon, вы получаете их за 5 $, включая доставку. Для углубленного изучения вам понадобится книга Барнса о Ada 2005, никоим образом не обойдется. –

ответ

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; 
+0

мой взгляд выглядит так же, только без первого с линией, я попробовал просто добавить его туда, но он говорит: «win32ada» - это неизвестный файл проекта – Ben

+0

Я использую Windows XP. Когда я установил 'win32ada', который я получил с [веб-сайта Libre] (http://libre.adacore.com), он сказал, что не может найти рабочий компилятор Ada и попросил меня перейти к его местоположению, предлагая мне 'C: \ GNATPRO'. Я изменил это на 'C: \ GNAT \ 2012', и он был установлен там (я вижу, что ваш эквивалент будет' C: \ GNAT' - ваши двоичные файлы компилятора находятся в 'C: \ GNAT \ bin', мои находятся на' C: \ GNAT \ 2012 \ bin'), включая 'win32ada.gpr' в том месте, где GNAT ожидает его найти. Нет следа каталога 'Bindings \ Win32Ada'; Интересно, как ты туда попал? –

0

Это потому, что процедура SQRT все еще работает, и вы пытаетесь сделать и скомпилировать решение и запустить процедуру одновременно. Остановите выполнение программы, а затем попробуйте компиляцию. Он должен работать так, как ожидалось.

+0

Это совершенно неправильно. –