我无法使用在delphi中开发的dll的功能。我在类型转换方面遇到了一些困难。
这是我要调用 DLL 的函数:
function rData(ID: Cardinal; queue: WideString): WideString; stdcall;
我的 C++ 代码是这样的:
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); }