| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > dll - требуется разъяснение |
| Автор: gonzales 27.12.2006, 16:05 |
| Хочу создать систему плагинов, ознакомился с созданием библиотек, в принципе все понятно, но есть один вопрос: мне нужно в плагине создать экземпляр класса и функцию, значение которой мне нужно возвращать в приложение. Можно ли это сделать вообще и если можно, то подойдет ли такой алгорим: 1. Экспортирую функции из библиотеки: Init - функция создания экземпляра класса устройства Open - функция доступа к устройству GetCode - функция возвращающая значение регистра устройства 2. В приложении вызываю функию Init - создается экземпляр класса из библиотеки (и держится в памяти) 3. В приложении вызываю Open - созданный наследник дает доступ к устройству 4. Запускаю таймер в приложении, по которому вызываю GetCode - который возвращает значение регистра устройства в приложение Скажите, уважаемые, будет ли такая схема работать? |
| Автор: Bose 27.12.2006, 18:59 |
| как всё сложно описано. 1. это будет работать 2. где создаётся экземпляр класса? в библиотеке! 3. какой наследник? кто-то умер? 4. это будет работать, если будет написано правильно |
| Автор: gonzales 27.12.2006, 21:32 |
| может и сложно но зато понятно. 2. экземпляр создается в библиотеке 3. имеется в виду экземпляр в общем если я все правильно понял - такая схема должна работать |
| Автор: MetalFan 28.12.2006, 10:06 |
| а "экземпляр класса" где убиваться будет? нельзя вроде как из библиотеки делфевые классы(экземпляры) передавать |
| Автор: gonzales 28.12.2006, 11:29 |
| да, приложению этот экземпляр класса до лампады - ему главное получать значение GEtCode, а убиваться он будет при закрытии библиотеки |
| Автор: gonzales 28.12.2006, 12:50 | ||||
| один вопрос: не могу понять, почему не работает??? пишу в библиотеке функцию
в основной программе
получаю i=2456 и следом Acsess Violation разобрался, все дело было в том, что я писал function Open(i:word):word; stdcall; без него все работате |