Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.12;
Скачать: CL | DM;

Вниз

Cpp DLL и Delphi App...   Найти похожие ветки 

 
Landgraph   (2002-08-30 09:50) [0]

На C++ написана библиотека со следующей функцией:
extern "C" char __export *asd( char *text)
{
MessageBox(0, text, "tst", 0);
return "asd";
}

Библиотека динамически загружается программой:

procedure TForm1.Button1Click(Sender: TObject);
var
dll:HWND;
asd: function(text:PChar):PChar;
begin
@asd:=nil;
dll:=LoadLibrary("dll.dll");
if(dll>=32) then
begin
asd:=GetProcAddress(dll, "_asd");
if(@asd=nil) then MessageBox(Handle, "NO FUNC!", "damn!", 0)
else
begin
Memo1.Lines.Add(asd("TEST MSG"));
end;
end;
FreeLibrary(dll);
end;

В результате работы получается, что функция возвращает "asd", но MessageBox выдает отнюдь не "TEST MSG", а какие-то отвлеченные символы.
Вопрос: Что не так? И вообще, какие типы надо использовать в качестве параметров функции?

Заранее спасибо.


 
c0pYc@t ©   (2002-08-30 09:57) [1]

там как я заметил

> asd(char *text)

стоит указатель, когда выводишь, ты его разименовываешь?


 
Странный Прохожий ©   (2002-08-30 10:41) [2]

type
asdfunct = function(text:PChar):PChar; cdecl; // !!!
// <...>

procedure TForm1.Button1Click(Sender: TObject);
var
dll:HWND;
asd: asdfunct
// <...>

т.е. забыли cdecl.


 
Zelius ©   (2002-08-30 11:16) [3]

код в корне не правильный! Потому что возвращая таким образом строку ты обретешь проблемы, например подвисшей памяти или нарушения доступа! Советую выделять буфер перед вызовом ф-ии!


 
Suntechnic ©   (2002-08-30 17:58) [4]

Пересмотри логику программы. То, что ты пытаешься делать, либо абсурд, либо приведёт к memory leak.



Страницы: 1 вся ветка

Текущий архив: 2002.09.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
1-35817
Cr@sh
2002-08-31 14:29
2002.09.12
Вопрос по использованию dll


4-35972
Igor_Z
2002-07-20 20:08
2002.09.12
копирование файла использую WinApi


1-35765
pvasya
2002-08-30 15:04
2002.09.12
HOOK на Delphi


1-35647
new_pahan
2002-09-01 18:59
2002.09.12
Можно ли изменять состояние пунктов в верхнем меню в чужой проге?


14-35905
AL2002
2002-08-19 18:52
2002.09.12
Есть у кого-то прога...