Я не могу использовать функцию dll, разработанную в Delphi. У меня возникли некоторые трудности с преобразованием типов.
Это функция, которую я хочу вызвать в DLL:
function rData(ID: Cardinal; queue: WideString): WideString; stdcall;
Мой код на С++ был таким:
typedef string (*ReturnDataSPL)(DWORD, string);
string result;
HMODULE hLib;
hLib = LoadLibrary("delphi.dll");
pReturnDataSPL = (ReturnDataSPL)GetProcAddress(hLib,"rData");
if (NULL != pReturnDataSPL)
result = pReturnDataSPL(JobID,printerName);
Проблема в том, что я не могу заставить его работать. Я не знаю, какой тип совместим с Delphi WideString и Cardinal.
Кто-нибудь Помогите мне
ИЗМЕНИТЬ:
Это функция, которую я хочу вызвать в DLL:
procedure rData(ID: Cardinal; queue: WideString; var Result: WideString); stdcall;
После изменения код выглядел так:
typedef void (__stdcall *ReturnDataSPL)(DWORD, BSTR, BSTR&); HMODULE hLib; BSTR result = NULL; hLib = LoadLibrary("delphi.dll"); pReturnDataSPL = (ReturnDataSPL)GetProcAddress(hLib,"rData"); if (NULL != pReturnDataSPL) { pReturnDataSPL(JobID,(BSTR)"Lexmark X656de (MS) (Copiar 2)",result); }