Вверх ↑
Этот топик читают: Гость
Ответов: 54
Рейтинг: 1
#1: 2016-12-21 21:22:06 ЛС | профиль | цитата
Собственно говоря, суть идеи звучит в самом названии темы. Как когда-то toropchin реализовал пакет с FTCG_pack.http://forum.hiasm.com/topic/55402 Такая-же идея засела в моих мыслях по поводу RTCG_pack. Предпосылки к такой идее те же. Компонуя и линкуя между собой элементы из палитры получается очень быстро собирать не только код целевого языка, но можно также быстро собрать схему самого компонента для конструирования кода целевого языка. Это особенно актуально для генерации кода языков в которых чрезвычайно большое количество похожих функций. Одним словом чтобы разработка пакета целевого языка не занимала много времени.

Но как оказалось на практике собрать такой пакет не так просто, а точнее положить ему начало. Открывая эту тему я искренне надеюсь на помощь разработчиков и тех у кого опыта программирования больше, чем у меня. Да, я видел несколько тем на форуме в названиях которых присутствуют символы "RTCG". Но к сожалению из их содержания я так и не понял - Как собрать пакет основанный на технологии RTCG. Перекопал всю справку и wiki, но подробного описания так и не нашёл. NetSpirit 12 July 2010 описал подробную инструкцию про создание пакета на основе FTCG. Для пакетов на основе RTCG, на сколько я понял этот сценарий не прокатит?

На некоторых ветках я задавал сопутствующие вопросы. И на сколько я понимаю разговор получится долгим и именно по этому решил открыть новую тему.
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#2: 2016-12-22 00:12:27 ЛС | профиль | цитата
brown-aleks писал(а):
Для пакетов на основе RTCG, на сколько я понял этот сценарий не прокатит?

Прокатит - достаточно изменить *.hws файлы компонентов пакета, чтобы они генерировали сценарии для RTCG. Но лучше конечно, если ставить такую задачу, переписать пакет под RTCG, чтобы работать лишь с одним кодогенератором.
карма: 27
0
Ответов: 54
Рейтинг: 1
#3: 2016-12-25 18:22:28 ЛС | профиль | цитата
После множества попыток создать пакет на основе RTCG, нервы сдают...
И в итоге решил удалить HiAsm со всеми потрахами, которыми он у меня оброс за несколько лет. Сделать чистую установку с сайта последней версии. Создать всё по инструкции. В надежде на чудо. Все эти танцы с бубном записал на видео. В видео вклеил свои коротенькие вопросы, которые возникали у меня по ходу. Но основной вопрос - "Чего я сделал не так??? Почему элементарно стартовый элемент не компилится??? И какой библиотеки ему ещё не хватает???" у меня до сих пор остаётся. Dilma на вас как на автора очень надеюсь, что Вы мне подскажите и научите.


карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#4: 2016-12-25 19:09:37 ЛС | профиль | цитата
Из видео так и не понятно - а была ли make библиотека добавлена или нет. Проект без нее собрать не получится.
карма: 27
0
Ответов: 54
Рейтинг: 1
#5: 2016-12-25 19:55:33 ЛС | профиль | цитата
make библиотека добавлена не была. я даже не совсем понимаю про какую именно библиотеку вы говорите.

эту ???
...\...\HiAsm\Elements\RTCG_pack\make\make_RTCG_pack.dll - я не знаю какое должно быть у неё содержимое... и от куда её взять. Если брать аналог из других пакетов, то в других пакетах они все разные.

или эту???
...\...\HiAsm\Elements\RTCG_pack\make.bat
@echo off
echo "make codegen dll for FTCG_pack packed"
copy ..\FTCG\CodeGen.dpr CodeGen.dpr
copy ..\FTCG\errors.pas errors.pas
..\..\compiler\delphi\dcc32.exe -U..\..\compiler\delphi CodeGen.dpr
pause

Редактировалось 1 раз(а), последний 2016-12-25 19:56:15
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#6: 2016-12-25 20:22:32 ЛС | профиль | цитата
brown-aleks писал(а):
эту ???
...\...\HiAsm\Elements\RTCG_pack\make\make_RTCG_pack.dll - я не знаю какое должно быть у неё содержимое... и от куда её взять. Если брать аналог из других пакетов, то в других пакетах они все разные.

Да эту. Для пакета генерации элементов подойдет пустой make, который делается в самом же HiAsm, например, этот
http://svn.hiasm.com/packs/web/make/make_web.sha
make_xxx.dll нужны для запуска собранного приложения или каких-то еще манипуляций с ним. В проектах, где запуска нет, он может быть полностью пустым.
карма: 27
0
Ответов: 54
Рейтинг: 1
#7: 2016-12-25 20:51:45 ЛС | профиль | цитата
Делаем раз...

Делаем два...

Ну и, в общем результат предсказуем...
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#8: 2016-12-25 21:47:00 ЛС | профиль | цитата
brown-aleks писал(а):
Делаем раз...

Для справки: компилятор Copy, который стоит по умолчанию в этом пакете, не является компилятором и все, что он делает это копирует один файл в другой, о чем в окне отладки и было написано
Copy from ... to ...

Очевидно, что после такого dll работать не будет

У вас же стоят все пакеты из стандартной установки - скопируйте вы уже готовый файл из пакета WEB Elements\web\make\make_web.dll в свой да и все(переименовать только не забыть). К чему такие сложности?

PS: в первом посте дана ссылка на тему пользователя toropchin, в этой теме есть архив, а в архиве лежит make_FTCG_pack.dll - эта библиотека не годится разве? Судя по исходнику *.sha это тоже пустая сборка, как и в пакете WEB.

Редактировалось 2 раз(а), последний 2016-12-26 00:16:39
карма: 27
0
Ответов: 54
Рейтинг: 1
#9: 2016-12-26 22:08:28 ЛС | профиль | цитата
Dilma писал(а):
Copy from ... to ...


Dilma писал(а):
Очевидно, что после такого dll работать не будет


Да, тут я промаргал момент... А ведь знал, что компилятор Copy только копирует и переименовывает...


1) попробовал make_FTCG_pack.dll из пакета toropchin - (скопировал в папку make и переименовал естественно в make_RTCG_pack.dll)

2) попробовал make_web.dll из стандартного пакета web - (скопировал в папку make и переименовал естественно в make_RTCG_pack.dll)

результат: без ругательного сообщения (dll не предназначена для выполнения в Windows) но в окне отладки - (Ошибка компиляции, код [1]:библиотека не найдена)


В установщике пакета у Торопчина FTCG_pack.his есть строка добавляющая компилятор, в стандартном ххх_pack.his такой строки нет. Может быть в этом дело???

FTCG_pack.his
function run(){

sys.addcompiler("ftcgCopy","\"%fname%\" \"%oname%\"","\compiler\\copyer.exe","ftcg");

sys.addpack("ftcg_pack","FTCG_pack","Исходники компонентов на языке FTCG","ftcg");

sys.setcompiler("ftcg_pack","ftcgCopy");

sys.addproject("ftcg_pack","FTCG_EntryPoint","Компонент","Исходники компонентов на языке FTCG","hws","make_ftcg_pack.dll");

}

Редактировалось 3 раз(а), последний 2016-12-26 22:10:09
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#10: 2016-12-27 01:39:22 ЛС | профиль | цитата
Возможно у кодогенератора есть зависимости от dll, которых нет в системе.
карма: 27
0
Ответов: 54
Рейтинг: 1
#11: 2016-12-27 11:35:45 ЛС | профиль | цитата
Каким компилятором нужно собирать из make_RTCG_pack.sha в make_RTCG_pack.dll ?
Каким компилятором собирается CodeGen.dll, можно ли глянуть на исходник?

Dilma писал(а):
Возможно у кодогенератора есть зависимости от dll, которых нет в системе.

Запускаю HiAsm в режиме WinXP-SP3 от имени администратора, ответ тот же: Ошибка компиляции, код [1]:библиотека не найдена

если бы хоть знать, на каком именно моменте HiAsm выкидывает эту ошибку и какую именно библиотеку он пытается найти...

Редактировалось 1 раз(а), последний 2016-12-27 11:38:32
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#12: 2016-12-27 13:41:56 ЛС | профиль | цитата
Собирается все этим http://www.mingw.org/ и от него же зависимости, а именно:

MSVCRT.DLL
LIBGCC_S_DW2-1.DLL
LIBSTDC++-6.DLL

Это то, без чего CodeGen.dll работать не будет.
карма: 27
0
Ответов: 54
Рейтинг: 1
#13: 2016-12-27 15:21:30 ЛС | профиль | цитата
Dilma писал(а):
Собирается все этим http://www.mingw.org/ и от него же зависимости, а именно:

Мммм...дэээ... уж. Кажется это выше моего интеллекта.

Dilma писал(а):
MSVCRT.DLL
LIBGCC_S_DW2-1.DLL
LIBSTDC++-6.DLL

Эти файлы в системных папках ОС присутствуют однозначно. - результат тот-же

Может быть я в настройках HiAsm, в Компиляторах, в новь созданном пакете RTCG_pack чего-то не то сделал или не сделал. Какие ключевые моменты влияют на его работоспособность???

Создание нового пакета, похожа на какую то садо-маза-фака

Почему бы господам разработчикам не уделить этой теме чуть большего внимания? Что бы было примерно так:
    1) Придумал наименование пакета, в соответствующее поле мастера по созданию пакетов забил его.
    2) Выбрал подходящий компилятор.

И готово. Мастер создаёт рабочую папку пакета со всеми необходимыми прибомбасами. Пустой, но рабочий пакет, которы остаётся только наполнить.

Редактировалось 1 раз(а), последний 2016-12-27 15:22:05
карма: 0

0
Ответов: 4630
Рейтинг: 749
#14: 2016-12-27 15:25:36 ЛС | профиль | цитата
brown-aleks писал(а):
Каким компилятором нужно собирать из make_RTCG_pack.sha в make_RTCG_pack.dll?
Для этого существовала специальная сборка GCC. Но лучше возьми это: make dll template NS.zip.
Собирается имеющимся там же батником с помощью компилятора Delphi.
make_rtcg.dpr - это исходник библиотеки, можно править в блокноте.
карма: 26

0
файлы: 1make dll template NS.zip [11.8KB] [672]
Администрация
Ответов: 15295
Рейтинг: 1519
#15: 2016-12-27 15:58:41 ЛС | профиль | цитата
brown-aleks писал(а):
Почему бы господам разработчикам не уделить этой теме чуть большего внимания? Что бы было примерно так:
1) Придумал наименование пакета, в соответствующее поле мастера по созданию пакетов забил его.
2) Выбрал подходящий компилятор.

Потому, что в этом смысла никакого нет. Если вы хотите сделать свой пакет, то знания языков вам необходимы. Если вы не знакомы с языками, то пакет вы не создадите - это будет пустая трата времени. Кроме того PackCreator упрощает лишь начальную конфигурацию и на работу кодогенераторов повлиять никак не может - это задача разработчика пакета, т.к. вы должны уметь собирать кодогенератор под вашу ОС ибо правится он регулярно, а делать актуальные сборки под Windows сейчас никто не будет.

brown-aleks писал(а):
Эти файлы в системных папках ОС присутствуют однозначно. - результат тот-же

Попробуйте выполнить из командой строки в папке, где лежит CodeGen.dll

rundll32 CodeGen.dll,buildPrepareProc


Редактировалось 1 раз(а), последний 2016-12-27 16:19:52
карма: 27
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)