Вниз
Скачать: CL | DM;

Написание 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 вся ветка

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.022 c
14-1083324645
van20
2004-04-30 15:30
2004.05.23
Справочник линий и станций метро Москвы


1-1083844495
Nikolai_S
2004-05-06 15:54
2004.05.23
Подскажите где взять какой-нибудь продвинутый StringGrid


9-1074163759
Black Fury
2004-01-15 13:49
2004.05.23
Наконец игра в сети.Желающие могут скачать!!! :))


14-1083733782
Dmitriy O.
2004-05-05 09:09
2004.05.23
Старость нужно уважать ? Или наоборот ?


1-1084350344
glGLU
2004-05-12 12:25
2004.05.23
Menu




   Наверх