请问如何调用带参数的dll?

aerol 2003-08-25 07:23:46
我会调用不带参数的dll,如dll有一个ShowImage()函数,void __fastcall
声明:void (__stdcall *ShowImage)();
实现:
TForm1::Button1Click(TObject *Sender)
{
if(DLLInstall==NULL) DLLInstall=LoadLibrary("NewForm.dll");
if(DLLInstall)
{
ShowImage=(void (__stdcall*)())GetProcAddress(DLLInstall,"ShowImage");
if(ShowImage) ShowImage();
else ShowMessage("Can not obtain Pointer");
}
else ShowMessage("Can Not Load NewForm.dll");
}

可是如果函数是带参数的怎么办?比如 ShowImage(int count,AnsiString c)
怎么声明呢?调用GetProcAddress怎么写呢?
...全文
42 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunmedia 2003-08-25
  • 打赏
  • 举报
回复
使用的方法和函数一样,将参数传入就可以了
ljianq 2003-08-25
  • 打赏
  • 举报
回复
注意:如果要通用(别的语言也能使用),不要使用AnsiString等类型的参数
ljianq 2003-08-25
  • 打赏
  • 举报
回复
声明:typedef void __declspec(dllimport) WINAPI ShowImage(int,AnsiString );
实现:
TForm1::Button1Click(TObject *Sender)
{
ShowImage* show;
if(DLLInstall==NULL) DLLInstall=LoadLibrary("NewForm.dll");
if(DLLInstall)
{
show=(ShowImage*)GetProcAddress(DLLInstall,"ShowImage");
int m=3;
AnsiString str="dsfsd";
if(show) show(m,str);
else ShowMessage("Can not obtain Pointer");
}
else ShowMessage("Can Not Load NewForm.dll");
}
coolfire729 2003-08-25
  • 打赏
  • 举报
回复
声明:void (__stdcall *ShowImage(int count,AnsiString c)))();

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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