【发布时间】:2010-07-23 02:23:17
【问题描述】:
我想在 Delphi 2010 中调用一个 DLL 函数。该函数接受一个字符串并将其写入带有 USB 接口的打印机。我不知道 DLL 是用哪种语言开发的。根据文档,函数的语法是:
int WriteUSB(PBYTE pBuffer, DWORD nNumberOfBytesToWrite);
如何在 Delphi 中声明和使用我的函数?
我这样声明函数:
var
function WriteUSB(myP:pByte;n:DWORD): integer ; external 'my.dll';
我应该在声明中使用stdcall 还是cdecl?
我这样调用 DLL 函数:
procedure myProc;
var
str : string:
begin
str := 'AAAAAAAAAAAAAAAAAAAAA';
WriteUSB(str,DWORD(length(tmp)));
end;
但是这段代码总是给我异常。我知道问题在于 String 是 Unicode 并且每个字符 > 1 字节。我尝试转换为不同的字符串类型(AnsiChar 和ShortString)但失败了。
这样做的正确方法是什么?
【问题讨论】:
标签: delphi string dll parameters