![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
TarasBer |
![]()
Сообщение
#1
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я поставил пакет win32ada, он создал папку include\win32ada
Если написать первой строкой test.gpr with "win32ada", то среда ругается при открытии пакета: [2011-02-08 16:25:57] C:\Program Files\ADA\projects\TEST\test.gpr:1:06: unknown project file: "win32ada" [2011-02-08 16:25:57] Error while loading project 'C:\Program Files\ADA\projects\TEST\test.gpr'. Loading the default project. Ну я это убрал. Добавил в test.gpr строчку for Source_Dirs use ("..\..\include\win32ada\**"); Пишу в test.adb with win32.winuser (вроде все основные функции, типа окно нарисовать итд, там). Компилирую. gnatlink "C:\Program Files\ADA\projects\TEST\test.ali" -shared-libgcc -g -g -fprofile-generate -o "C:\Program Files\ADA\projects\TEST\test.exe" c:/program files/ada/bin/../libexec/gcc/i686-pc-mingw32/4.3.6/ld.exe: cannot find -lwin32ada collect2: ld returned 1 exit status gnatlink: error when calling C:\Program Files\ADA\bin\gcc.exe gnatmake: *** link failed. [2011-02-08 16:28:19] process exited with status 4 (elapsed time: 06.26s) Что делать? -------------------- |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата type Key_Arr will be declared; -- как-то так Так не пойдет. Максимум, что можно предложить:generic и звать так: type Char_Arr is array (Positive range <>) of Character; Тогда тип Key_Arr из пакета Dictionaries не нужно создавать, его можно сразу передавать в пакет, уже готовый. Понимаешь, в чем тут проблема, да? В том, что тебе для описания функции My_Func (еще до инстанцирования шаблона) нужен тип-массив. Вот в нем и проблема... В принципе, все стандартные контейнеры поступают подобным образом: получают извне и тип элементов, и тип-индекс, и тип-массив. Если бы можно было сделать так, как ты хочешь - тип-массив однозначно был бы описан внутри шаблона. Но, увы, это невозможно. Цитата Если после with module; use module; ещё вписать pragma Elaborate_All(module), то предупреждение и счезает, но появляется ошибка о циклической элаборации. Это надо как-то обходить, или воспринимать, как изъян архитектуры модулей? Взял твой код, вписал туда Elaborate_All всего в двух файлах, в трех местах:1) with Parser; pragma Elaborate_All (Parser);(файл func_lib.ads) 2) with Func_Lib; pragma Elaborate_All (Func_Lib);(файл wintestmain.adb) , и полностью пересобрал программу (то есть, совсем полностью, удалил все, что было в папке, все *.o, *.ali, *.exe и сделал Build All). Ни одного предупреждения, связанного с элаборацией больше не присутствует. Не надо во всех модулях. где были Warning-и, это делать сразу. Исправляй ошибки/предупреждения по мере их поступления. Так что никакого изъяна в архитектуре нет... |
![]() ![]() |
![]() |
Текстовая версия | 17.07.2025 0:18 |