| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Экспорт функций из ДЛЛ |
| Автор: maxfox111 9.7.2013, 17:20 | ||
| Добрый день, Хотелось бы получить консультацию по следующему вопросу: Есть DLL (DLL_LIB.dll)у которой есть набор экспортируемых функций, правильно ли я объявляю их в модуле дельфи. То есть есть список: DLL_LIB void __stdcall Set_Bit_R1(unsigned short int * ); -------------//-----------------//---------- DLL_LIB void __stdcall Set_Bit_R24(unsigned short int * ); Я объявляю, у себя в исходнике, его как
1) У меня очень большое сомнение в том, что я правильно объявляю параметры. 2) В том случае, если я просто создаю такой список объявлений, то программа запускается и все нормально. В том случае если я хотя бы, какой вызов из этого списка пытаюсь осуществить, то выдается сообщение об ошибке «The procedure entry point Set_Bit_R1 could not be located in the dynamic link library DLL_LIB.dll.» Большая просьба (не бить сильно) либо подскажите где возможно прочитать о правильной декларации экспортируемых функций, либо подскажите в чем я ошибаюсь. Спасибо |
| Автор: Poseidon 9.7.2013, 17:48 |
| На сколько я понимаю, тут передается 2 параметра: unsigned short и int *. unsigned short в си - это word в Delphi. int * в си - это, наверно, PInteger. Ну и при объявлении функции после слова external имя библиотеки должно передаваться как текст (т.е. в одинарных кавычках). |
| Автор: maxfox111 9.7.2013, 18:09 | ||||
| Уважаемый Посейдон 1) К ДЛЛ прилагается описание функций и макросов так для этого списка который привел я, там указано макросы: SET_BIT1(Data) функции: Set_Bit1(unsigned short int *Data ) 2) К стыду своему сразу не обратил внимание, Я объявляю вот так, то есть с одинарными кавычками. Это правильно?
А в соответствии с вашими комментами надо
|
| Автор: Illusion Dolphin 9.7.2013, 19:25 | ||
| http://www.lix.polytechnique.fr/~liberti/public/computing/prog/c/C/CONCEPT/data_types.html Т.е. это один параметр
|
| Автор: maxfox111 10.7.2013, 09:37 | ||||||
| Добрый день, еще раз условие: Есть DLL (DLL_LIB.dll)у которой есть набор экспортируемых функций
Еще есть документ описывающий действия выполняемые этими функциями. Где функции описаны также. Я объявляю, у себя в исходнике, его как
Без вызова этих процедур, моя программа компилируется нормально. НО стоит добавить вызов любой процедуры, выскакивает сообщение об ошибке «The procedure entry point Set_Bit_R1 could not be located in the dynamic link library DLL_LIB.dll.» Посмотрел в тотал командере при помощи плагина FileInfo со снятой галкой "Undecorate", список имен необходимых мне функций выглядит так:
Такие имена в декларации не поддерживает уже среда Дельфи. Пересобирать ДЛЛ я не могу, так как не имею ее исходного кода. Вопрос: Как из своей программы получить возможность осуществить вызов функций из этой ДЛЛ? Большое спасибо |
| Автор: Fomoco 10.7.2013, 11:49 | ||
Попробуй так
|
| Автор: Poseidon 10.7.2013, 12:19 |
| maxfox111, я думаю, что если хочешь действительно получить ответ, то придется показать тот самый документ, который идет в сопровождение к этой длл, иначе мы тут на кофейной гуще гадаем. |