связывание Dll

  • Автор темы Автор темы berserker
  • Дата начала Дата начала
B

berserker

Разрабатываю программу на DELPHI:суть в следующем есть exeшник и штук 10 dll,из еxe файла получаю необходимые данные пересылаю их в одну из dll(она отвечает за все вычисления),она пересылает во все остальные,они что-то делают и отправляют результат обратно.Прогрмма уже написана(с применением ООП) и работает,но пока только вместо dll - раs.

вопрос1: как проще можно организовать предачу данных между dll и взаимодействие с внутренними классами этих dll,если подразумевается что в дальнейшем могут добавляться dll написанные на других языках?

вопрос2: на данном этапе я выбрал в качестве такого инструмента TStream.КАК ИСПОЛЬЗОВАТЬ его МЕТОД Writebuffer?DElphi выдает мне постоянно EAbort на следующее выражение:
obj_stream:=tstream.Create;
obj_stream.writebuffer(a,sizeof(a));
 
Это как, простите?
предачу данных между dll
По всем правилам, а как может быть иначе ....
что в дальнейшем могут добавляться dll написанные на других языках
А вот тут надо подробнее.
КАК ИСПОЛЬЗОВАТЬ его МЕТОД Writebuffer?
Что говорит справка?


Кстати, а при чем тут СОМ ?
 
Передавай указатели на структуры - указатель он и в африке указатель. Естественно размер структур и их структура должны быть индентичны.
 
Отвечаю:"вместо dll pas" означает,что у меня уже написан код и я его хочу вставить в dll
Справка не говорит ничего нового,Delphi почему -то глючит именно на команде WriteBuffer,говорит что Tstream не содержит этого метода,но компилирет и выдает потом EAbort. ReadBuffer - все ОК

А СOM здесь притом,что часть библиотек( сделанных в Matlab) связана с exe через COM и я хочу сделать тоже самое с другими
 
TStream - это абстрактный класс, поэтому напрямую его использовать нельзя. Используй потомков этого класса, к примеру TMemoryStream.
 
Если хочешь сделать связку через COM - почитай про интерфейсы и т.д.
Если просто DLL - то нужно помнить что у самой программы (Exe) и DLL разные зоны видимости данных, и потому передать в DLL, например, объект, просто так не получится. Так же как и передавать тип String без использования менеждера памяти.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab