调用C写的动态库中的函数

haoqingqlm 2005-09-20 05:49:05
我要调用一动态库中的函数,声明如下
DLLImport(bool) WriteInfo(LPCTSTR lpszPWD,PVOID pData,BYTE DataNo,BYTE &Length);

在delphi中已知的四个参数类型是string,string,int,int

请问如何调用,给个实列,谢谢
...全文
89 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
haoqingqlm 2005-10-14
  • 打赏
  • 举报
回复
自己做好了

var
pData: Pointer;
v1,len: Integer;
Content:string;
begin
len := length(Content);
GetMem(pData, len);
Move(Content[1], pData^, len);
if WriteInfo(WPSW, pData, 5, len) then
........
end;
hexenzhou 2005-09-21
  • 打赏
  • 举报
回复
function WriteInfo(lpstr: PChar; pData: Pointer; DataNo: byte; var Length: byte): Boolean;
xixuemao 2005-09-21
  • 打赏
  • 举报
回复
好像少了个const
function WriteInfo(const lpszPWD: PChar; const pData; DataNo: byte; var Length: byte): boolean;
xixuemao 2005-09-21
  • 打赏
  • 举报
回复
function WriteInfo(lpszPWD: PChar; const pData;DataNo: byte;var Length: byte): boolean;

这样试试看
vicky_jam 2005-09-21
  • 打赏
  • 举报
回复
虽然也是问题 但是能调用DLL 呵呵~
http://community.csdn.net/Expert/topic/4283/4283244.xml?temp=.6506159

注意Delphi 的String类型 和 VC 中的string类型是不一样的 不能直接调用~~
很土 2005-09-21
  • 打赏
  • 举报
回复
调用例子:
var
AStr1, AStr2: String;
intV1, intV2: Integer;
begin
AStr1 := '123412341234';
SetLength(AStr2, 255);
intV1 := 0;
intV2 := 255;

WriteInfo(PChar(AStr1), PChar(AStr2), intV1, intV2);
end;
很土 2005-09-21
  • 打赏
  • 举报
回复
const Dll_Name = 'abc.dll'; // 动态库名由自己定义

function WriteInfo(const APassword: PChar; AData: Pointer;
ADataNo: Byte; var ALength: Byte): Boolean; cdecl;
external Dll_Name name 'WriteInfo';
haoqingqlm 2005-09-20
  • 打赏
  • 举报
回复
自己先顶

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧