172 похожих чатов

С бодрым. Есть для себя задача - хочу плюсовый плагин

портировать на Rust. Чтоб понять кишки взаимодействия программ между собой (всякие ABI, соглашения о вызовах и т.п).

Ограничения:
1. Нет export C, прокинуть в хедеры не могу.
2. Основной таргет - винда. А под неё компилится только MSVC.

На скрине пример того, что вообще хочу перетащить. ADDIN_API = __stdcall

Вопросы:
1. А реализуемо ли вообще то, чего я хочу добиться?
Посмотрел, что Rust может в MSVC ABI и подумал, что может выстрелить.

2. В какую сторону копнуть, чтоб понять куда вообще можно двинуться по реализации?
Мне предлагали попробовать bindgen, но он использует libclang, а под виндой только MSVC так что не получится.

Хочу есть этого слона по частям, но с чего начать - совсем не понимаю.

2 ответов

8 просмотров

да, вполне себе реализуемо. если вот эти классы без сложных наследований, то даже можно сказать довольно просто bindgen тебе тут не помошник, он не умел (вряд ли что-то изменилось на текущий момент) генерировать виртуальные таблицы, поэтому придется их писать ручками посмотри как организованы виртуальные таблицы компилятора от микрософта. очень много подобных тем можно найти в околочитерских комьюнити для различных игр, там можно и какие другие вещи подчерпнуть конечно, всегда можно и вправду написать на с++ какой-то объект, что имплементирует этот класс, а внутри себя перенаправляет вызовы в более-менее известное и стабильное соглашение

Кого я вижу))))

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Кто-нибудь решал проблему с автоматическим скроллингом к выбранной ячейке в TDBGrid в Lazarus? Проблема в том, что есть допустим 3 столбца, третий столбец виден наполовину, вк...
Дмитрий Логинов
1
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
19
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Чорт! Чорт! Чорт! Стала ставить через GetIt (написано же, что ручками не рекомендуется) Сломалось на дублировании моей TSkLabel. Чтож мне ее по всем проектам переименовывать в...
Катерина Свиридова
7
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
Hey someone plz help to resolve my issue here is my table... Log { id user_id type target_ct target_obj_id action_ct action_obj_id workspace_id created_at } i wanna fil...
Rahul Singh
1
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
Карта сайта