| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [Delphi] Использование dll |
| Автор: Volf 13.2.2007, 16:10 |
| Уж звеняйте, если немного не в тему или подобная тема была уже! Вопрос в следующем: Создаю dll фсё нормально компелится и, естественно, ругается, что не может быть запущено.... Потом в проекте пробую подцепить свою dll, которая лежит в тойже директории, что и exe... Мож я что не понимаю... Хотяб сцылку на ман прикольный дайте.... Особо времени нет в инете лазить.... Помогите, заранее спосибки.... |
| Автор: Alexeis 13.2.2007, 16:25 |
| В параметрах запуска, можно указать приложение, которое будет ее загружать, тем самым можно производить ее отладку. Если приложение и библиотека находятся в одной папке и все имена указаны правильно, то загрузка пройдет без проблем. Проверьте все названия функций имя библиотеки. |
| Автор: Ptica_Oz 13.3.2007, 14:13 | ||
| написала я длл на VC++ для автоматизации автокада с использованием win api. в правильности работы ф-ций, описаных в длл я уверена. подключила ее к делфи (пишу плагин) и тут такое начилось!!! а именно: ф-ции win api работают не корректно. автоматизация, по крайней мери та, которая описана до проблемной ф-ции работает нормально, но что будет дальше... мысли об этом меня пугают. в делфях длл ф-цию описываю так:
люди добрые!!! помогите кто чем может!!! |
| Автор: Alexeis 13.3.2007, 14:40 |
| Ptica_Oz, в VC++ функции Dll объявлены как stdcall или по умалчанию? |
| Автор: Ptica_Oz 13.3.2007, 14:48 |
| да, как stdcall |
| Автор: Alexeis 13.3.2007, 14:55 |
| а слона то я и не подметил Делфийский стринг != Сишный стринг. В делфи стринг это длинная строка с со сложной структурой, фактически неявный объект, для использования которого нужен общий с Dll менеджер памяти. Вероятно в VC передавался PChar. Именно его и нужно указывать в качестве параметра прототипа функции в делфи. Вообще параметры string могут передваться только от приложения написанного в делфи к dll написанной также на делфи или наоборот. |
| Автор: Ptica_Oz 13.3.2007, 15:14 | ||
попробую... но мне кажется дело тут не в этом... длл получает параметры (в длл они char *) проблема возникла конкретно при выполнении этой ф-ции:
до этого полученные параметры использовались успешно, хотя только в ф-циях автоматизации а не в win api ф-циях З.Ы. hPrinter = 0, pname = имя принтера, то самое, которое передаётся из делфей З.З.Ы. а самое забавное, что по началу эта ф-ция срабатывала (правда не знаю корректно ли) а вылетала на другой win api-шной ф-ции, которая вызывалась соответственно позже... |
| Автор: Alexeis 13.3.2007, 16:52 |
что это за функция? да и вообще при неправельной передаче параметров глюки могут появиться в любом месте |
| Автор: Ptica_Oz 14.3.2007, 09:35 |
| кажись стало получаться, но возникли проблемы с преобразованием String в PChar. Об этом вhttp://forum.vingrad.ru/topic-140996/0.html#entry1063591 |
| Автор: Ptica_Oz 14.3.2007, 12:38 |
| сделала как вы советывали: передаю PChar. толку ноль. в том же самом месте спотыкается. думаю тут уже в VC++ проблема попробую в другом подразделе вопрос задать... спасибо за помощь. |
| Автор: Alexeis 14.3.2007, 14:13 |
| Ptica_Oz, попробуйте сделать пустую Dll, которая экспортирует функцию с теми же параметрами. и выводит на экран содержимое переданных параметров. Я поробую написать прогу на делфи, которая заполнит их и вызовет функцию. |
| Автор: Ptica_Oz 14.3.2007, 14:18 |
| в длл я натыкала MessageBox для контроля происходящего, все параметры передаются нормально. прихожу к выводу что именно с DocumentProperties проблемы... |