Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Чужие DLL

348
14 марта 2003 года
Saris
389 / / 14.03.2003
Тут такое дело. Загружаю DLL написанную на дельфях. Отсылаю туда текст, его функция и должна вернуть. А DLL вместо исходного текста принимает текст: "ZP" и кучу пробелов. Билдер в качестве ответного текста принимает пустой текст. К чему бы это?
358
14 марта 2003 года
moonmike
423 / / 18.10.2002
Цитата:
Originally posted by Saris
Тут такое дело. Загружаю DLL написанную на дельфях. Отсылаю туда текст, его функция и должна вернуть. А DLL вместо исходного текста принимает текст: "ZP" и кучу пробелов. Билдер в качестве ответного текста принимает пустой текст. К чему бы это?


Как объявлена функция в dll??Как отсылаешь текст??В виде AnsiString? Если dll написана правильно то скорее всего надо пересылать не AnsiString а char*

348
14 марта 2003 года
Saris
389 / / 14.03.2003
Цитата:
Originally posted by moonmike

Как объявлена функция в dll??Как отсылаешь текст??В виде AnsiString? Если dll написана правильно то скорее всего надо пересылать не AnsiString а char*


Вот вся функция:
function rec_in(obozn: Pchar): Pchar;export;stdcall;
var mystr: Pchar;
begin

mystr:=obozn;
messagedlg(mystr, mtInformation,[mbOk], 0);
rec_in:=mystr;
end;
А текст я и так пересылаю как char*.

358
14 марта 2003 года
moonmike
423 / / 18.10.2002
Цитата:
Originally posted by Saris

Вот вся функция:
function rec_in(obozn: Pchar): Pchar;export;stdcall;
var mystr: Pchar;
begin

mystr:=obozn;
messagedlg(mystr, mtInformation,[mbOk], 0);
rec_in:=mystr;
end;
А текст я и так пересылаю как char*.


А из своей проги ты ее как дергаешь??Функцию эту.

348
14 марта 2003 года
Saris
389 / / 14.03.2003
Цитата:
Originally posted by moonmike

А из своей проги ты ее как дергаешь??Функцию эту.


Лови весь обработчик
char* (__stdcall *rec_in)(char* str);
HINSTANCE dll=LoadLibrary("mydll.dll");
if(dll)
{
rec_in=(char*(__stdcall*)(char*))GetProcAddress(dll,"rec_in");
if(rec_in) ShowMessage(rec_in("rabotaet!!!"));
else ShowMessage("LLLLL");
}
else ShowMessage("HHHHH");
FreeLibrary(dll);

358
14 марта 2003 года
moonmike
423 / / 18.10.2002
Цитата:
Originally posted by Saris

Лови весь обработчик
char* (__stdcall *rec_in)(char* str);
HINSTANCE dll=LoadLibrary("mydll.dll");
if(dll)
{
rec_in=(char*(__stdcall*)(char*))GetProcAddress(dll,"rec_in");
if(rec_in) ShowMessage(rec_in("rabotaet!!!"));
else ShowMessage("LLLLL");
}
else ShowMessage("HHHHH");
FreeLibrary(dll);


А попробуй вот так:
typedef char* (__import __stdcall *recin)(char*);
recin rec_in;
HINSTANCE dll=LoadLibrary("mydll.dll");
if(dll)
{
rec_in=(recin)GetProcAddress(dll,"rec_in");
if(rec_in) ShowMessage(rec_in("rabotaet!!!"));
else ShowMessage("LLLLL");
}

348
14 марта 2003 года
Saris
389 / / 14.03.2003
Цитата:
Originally posted by moonmike

А попробуй вот так:
typedef char* (__import __stdcall *recin)(char*);
recin rec_in;
HINSTANCE dll=LoadLibrary("mydll.dll");
if(dll)
{
rec_in=(recin)GetProcAddress(dll,"rec_in");
if(rec_in) ShowMessage(rec_in("rabotaet!!!"));
else ShowMessage("LLLLL");
}


Результат тот же. :sad:

358
14 марта 2003 года
moonmike
423 / / 18.10.2002
Цитата:
Originally posted by Saris

Результат тот же. :sad:


Ну что я могу сказать...кидай свою dll попробую сам прицепить, как прицеплю напишу как это сделал.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог