求教,delphi编写ocx掉用c的DLL的问题

xuexue1987 2014-04-22 05:15:49
一直在做java的BS开发,所以不太懂delphi,请教一下大家!
项目里需要做一个接口,由于要调用dll,所以只有用js调用ocx,ocx作为中间层调用接口方的dll,以前已实现过其他接口,所以方案是可行的。
这次调用的dll是api方式的(貌似是C写的),头文件如下:
typedef void (WINAPI *Callback)(char *msg); //回调函数类型
extern "C"
{
void __stdcall SetClientCallback(Callback lpCallback);
void __stdcall Request(const char* EntPara, char* RetPara, short* iRetValue);
}
接口定义:
void Request(char* EntPara[in],char* RetPara[out],Short *iRetValue[in,out])
目前静态声明,1:
procedure Dll_Request(var inPara,outPara: PChar;var retPara:array of short);stdcall;external 'miclient.dll' name 'Request';
调用
Dll_Request(inPara,outPara,retPara);
调用好像有异常

目前静态声明,2:
procedure Dll_Request(var inPara,outPara: array of char;var retPara:array of short);stdcall;external 'miclient.dll' name 'Request';
调用
Dll_Request(inPara,outPara,retPara);
调用后属性未返回

求教应该怎么调用才能正确
...全文
556 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwzxl 2014-05-30
  • 打赏
  • 举报
回复
页面调ocx控件 这步确认没问题吧
武稀松 2014-05-30
  • 打赏
  • 举报
回复
Delphi的动态数组在C里面没有可以对应的类型. 这里你还是用Pansichar吧.
nm_wyh 2014-04-24
  • 打赏
  • 举报
回复
array of char换成PChar,不要传递array of char这种,不能用以前的来看,不同的dll虽然你看上去他都是Char*,但是实际上内部实现鬼知道他是怎么写的,一般见着Char*的就用PChar代替就没有问题!
lght 2014-04-23
  • 打赏
  • 举报
回复
Request(const char* EntPara, char* RetPara, short* iRetValue); 应该是这样 Request(const EntPara: PAnsiChar; RetPara: PAnsiChar; iRetValue: PShortInt);
金卯刀 2014-04-23
  • 打赏
  • 举报
回复
引用 2 楼 xuexue1987 的回复:
[quote=引用 1 楼 Avan_Lau 的回复:] Short *iRetValue对应的翻译为iRetValue: PShortInt
哦 谢谢 我试试 那char* RetPara 用 PChar 还是 array of char 合适一些? 之前一个接口char*用 array of char 调用成功了[/quote] array of char类型的数组名实际为指针,只要大小合适,是可以的。最好用pchar,getMem
xuexue1987 2014-04-23
  • 打赏
  • 举报
回复
引用 1 楼 Avan_Lau 的回复:
Short *iRetValue对应的翻译为iRetValue: PShortInt
哦 谢谢 我试试 那char* RetPara 用 PChar 还是 array of char 合适一些? 之前一个接口char*用 array of char 调用成功了
金卯刀 2014-04-22
  • 打赏
  • 举报
回复
Short *iRetValue对应的翻译为iRetValue: PShortInt

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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