Задача: собрать схему в обход hiasm.
Вопросы:
1. Для сборки достаточно взывать buildPrepareProc() и потом buildProcessProc() ?
2. struct TCodeGenTools { ... int __stdcall(* sdkGetCount)(id_sdk SDK); .... - http://svn.hiasm.com/hiasm5/packs/RTCG/CGTShare.h
В этой строке происходит добавление в структуру TCodeGenTools функцию вызова sdkGetCount которая передаётся из hiasm при вызове функции?
Этот топик читают: Гость
Ответов: 498
Рейтинг: 39
|
|||
карма: 0 |
|
Ответов: 4631
Рейтинг: 749
|
|||
1) Вероятно достаточно. Если заполнить TBuildProcessRec
2) TCodeGenTools содержит указатели на функции и их описание, которые заполняются средой. Кодогенератор вызывает эти функции в процессе сборки. Эти функции размещены в HiAsm и без их полной реализации ничего не получится. Нужно распарсить схему, конфиги компонентов и предоставить все необходимые данные для своей реализации этих функций, которые затем и будет вызывать кодогенератор. |
|||
карма: 26 |
| ||
Голосовали: | Muz-Tv |
Ответов: 498
Рейтинг: 39
|
|||
Netspirit, спасибо за подробный ответ, так и думал.
|
|||
карма: 0 |
|
Ответов: 498
Рейтинг: 39
|
|||
3) Хочу вызвать из C# функцию CheckVersionProc()
С++ кодогенратора структура выглядит так:
Подскажите где ошибка? |
|||
карма: 0 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 7 раз(а), последний 2025-01-19 06:02:52 |
|||
карма: 0 |
|
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
Platform target должен быть соответствующий. У меня работает для Platform target = x86.
|
|||
карма: 6 |
|
Ответов: 498
Рейтинг: 39
|
|||
Cdecl помогло, CheckVersionProc вызывается, но buildProcessProc нет. Проверил ещё раз типы функции, в CodeGenTool, там созданы пустые функции возвращающие данные нужного типа.
Выглядит так:
------------ Дoбавленo в 21.29: Nic писал(а): Platform target должен быть соответствующий. У меня работает для Platform target = x86.это который в свойствах проекта? |
|||
карма: 0 |
| ||
файлы: 1 | code_32608.txt [823B] [620] |
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
Надо внимательно изучить в интернете тему передачи параметров или, если для Вас это неприемлемо, "методом тыка" подбирать параметры маршалинга. Изучение вопроса можно, например, начать с этого ресурса: http://www.pinvoke.net
|
|||
карма: 6 |
| ||
Голосовали: | Muz-Tv, LastLeader |
Ответов: 498
Рейтинг: 39
|
|||
Зачем в кодогенераторе делается ссылка на структуру? вот тут:
private static extern int buildProcessProc(TBuildProcessRec Params); |
|||
карма: 0 |
|
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
Изучите передачу простых параметров на примере компонента i1 пакета cnet. Затем прочитайте в интернете передачу структуры. Наконец, можно будет пробовать с кодогенератором.
|
|||
карма: 6 |
|
Ответов: 316
Рейтинг: 21
|
|||
Nic, а можешь просто ответить на прошлый "глупый" вопрос нам не опытным?
|
|||
карма: 1 |
|
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
LastLeader, с чего вы взяли что мне известен ответ на "глупый" вопрос? Чтобы на него ответить мне необходимо пройти все те же шаги. Вы думаете мне настолько скучно?
|
|||
карма: 6 |
|
Ответов: 316
Рейтинг: 21
|
|||
Спасибо за вразумительный ответ.
|
|||
карма: 1 |
|
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
карма: 6 |
| ||
Голосовали: | CriDos |
Ответов: 1841
Рейтинг: 369
|
|||
Nic, я как раз изучаю Ваш форк RTCG
|
|||
карма: 1 |
|