急求:在不确定dll参数个数和类型的情况下怎么调用dll

fei1109 2008-07-03 02:32:26
VC中在不确定dll参数个数和类型,没有统一接口的情况下怎么调用dll,一个泛化的调用dll的方法.就是说,当输入dll的参数类型和参数名后,程序自己调用.
...全文
121 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaoteng1984 2008-07-19
  • 打赏
  • 举报
回复
在非DLL程序中,可以使用变参函数和va_list,跟printf的变参实现原理差不多
DLL函数,可以用数组做参数解决这个问题。如: void DllFunc(size_t argsCount, int args[])
lake_cx 2008-07-03
  • 打赏
  • 举报
回复
__extern "C"是不使用函数重载,导出函数名不变
fei1109 2008-07-03
  • 打赏
  • 举报
回复
还是不知道什么意思,能不能给个例子看看
做鸡真好吃 2008-07-03
  • 打赏
  • 举报
回复
如果函数有返回值,存放在哪个寄存器里了?怎么通过汇编传给vc的变量,如cstring?
做鸡真好吃 2008-07-03
  • 打赏
  • 举报
回复
mark!
Amuro1987218 2008-07-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lfchen 的回复:]
//根据函数呼叫协议把参数传过去,如果是__extern "C"则是下面的语句
push 第一个参数
push 第2个参数
.....
push 最后一个参数
call eax ;执行函数

[/Quote]

__extern "C"是__cdecl吧?
记得好象也是右到左入栈?
不过call完之后要平衡堆栈
add esp,参数个数*4
一条晚起的虫 2008-07-03
  • 打赏
  • 举报
回复
//根据函数呼叫协议把参数传过去,如果是__extern "C"则是下面的语句
push 第一个参数
push 第2个参数
.....
push 最后一个参数
call eax ;执行函数
Amuro1987218 2008-07-03
  • 打赏
  • 举报
回复
个数你还是要知道的,不然会破坏堆栈

可以用LoadLibary
然后GetProcAddress(hmod,函数名);

_asm
{
//根据函数呼叫协议把参数传过去,如果是__stdcall则是下面的语句
push 最后一个参数
push 倒数第2个参数
.....
push 第一个参数
call eax ;执行函数
}
sunlin7 2008-07-03
  • 打赏
  • 举报
回复
可以利用编译原理进行选择和调用,但可以得有一定的编译知识。

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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