Форум: "WinAPI";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
ВнизНаписание DLL Найти похожие ветки
← →
Flying home (2004-04-06 17:35) [0]Господа! Подскажите статьи, в которых бы доступно описывались принципы передачи и возвращения параметров функций из DLL и обратно. Короче, желательно написать DLL, которую могли бы юзать EXE, написанные не на Delphi без использования менеджеров памяти.
← →
Матлабист (2004-04-06 17:51) [1]Для экспортируемых функций:
1) Не использовать в параметрах и в возращаемом значении такие типы, как string, TObject, ... Максимум interface.
2) Использовать соглашения вызова stdcall (желательно)
← →
Flying home (2004-04-06 18:24) [2]А PChar можно? В том-то и дело, что нужно строки и передавать, и получать.
← →
Suntechnic © (2004-04-06 18:27) [3]>Матлабист
... Максимум interface
И что ж это приложение написанное не на Delphi с этим типом делать то будет?
← →
Suntechnic © (2004-04-06 18:31) [4]>Flying home
PChar можно. Только есть одно очень важное правило, касаемое не только PChar, а всего того, что передаётся в Dll:
Где память выделялась, там она и должна уничтожаться. Иначе проблем не оберёшься.
← →
Flying home (2004-04-07 09:51) [5]Вот именно эти проблемы меня и волнуют. Где прочитать об этом?
Желательно не просто строки передавать, но и record"ы из разных типов, в том числе и строки. И еще: передавать по ссылке, или по значению?
← →
Digitman © (2004-04-07 09:58) [6]
> Flying home
> передавать по ссылке, или по значению?
если речь идет о передаче структур и строк, то только по ссылке
строку вообще по значению невозможно не передать
структуру же размером до 8 байт в принципе можно и по значению передать, но это извращение
← →
Digitman © (2004-04-07 09:58) [7]
> Flying home
> передавать по ссылке, или по значению?
если речь идет о передаче структур и строк, то только по ссылке
строку вообще по значению невозможно передать
структуру же размером до 8 байт в принципе можно и по значению передать, но это извращение
← →
Flying home (2004-04-07 11:01) [8]Неужели нигде нет искомой инфы?
//Suntechnic
//Где память выделялась, там она и должна уничтожаться
Это как?
← →
DevelS (2004-04-07 11:08) [9]>>структуру же размером до 8 байт в принципе можно и по значению передать, но это извращение
почему именно 8 байт ? где написано про это ограничение?
← →
panov © (2004-04-07 11:12) [10]>DevelS (07.04.04 11:08) [9]
До 256 байт. Размер для передачи параметров через стек.
← →
DevelS (2004-04-07 11:19) [11]panov © (07.04.04 11:12) [10]:
уже лучьше :).
← →
Digitman © (2004-04-07 11:35) [12]
> DevelS
имелось виду - парой регистров edx:eax
стек не имелся ввиду, ибо надо быть круглым идиотом для передачи по значению структур большего размера через стек
← →
Flying home (2004-04-07 12:26) [13]Чем умничать, лучше бы ответом помогли...
← →
Игорь Шевченко © (2004-04-07 13:34) [14]
> Чем умничать, лучше бы ответом помогли...
А сам уже не состоянии подумать/поискать ?
← →
Digitman © (2004-04-07 13:41) [15]
> Flying home
ты читал топик "Сalling conventions" в хэлпе ? вникал ? надо думать, ничего не понял из того что там написано ?
← →
Flying home (2004-04-07 16:34) [16]Прочитал. Понятно, но мало. В смысле мало написано. Зачем нужен борландовский менеджер памяти?
//Игорь Шевченко
См. мой вопрос.
← →
BiN © (2004-04-07 16:40) [17]Прочитал. Понятно, но мало. В смысле мало написано.
ну а теперь ты перешел на след. уровень ->
-> теперь пришла пора читать Parameter passing (там же)
← →
Digitman © (2004-04-07 16:48) [18]
> Зачем нужен борландовский менеджер памяти?
для внутренних нужд программы, разработанной в среде Делфи или ВСВ
если вызвающий и вызываемый модули разработаны в этих средах, они при определенных условиях могут пользоваться одним и тем же упомянутым менеджером, при этом вызываемый код может запрашивать блоки памяти у менеджера, а вызывающий их освобождать
во всех иных случаях (за исключением случаев, когда использование конкретного менеджера памяти по соглашению между вызывающей и вызываемой сторонами) ответственность за выделение/перераспределение/освобождение памяти делить между сторонами вызова недопустимо
← →
Flying home (2004-04-07 16:54) [19]//Digitman
Thanks
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.034 c