根据一个函数名,在dll中得到函数指针
编号:QA004506
建立日期: 2001年12月26日 最后修改日期:2002年2月21日
所属类别:
hujing888:
我的操作系统:win98
开发工具:VC6.0
我目前正在做一个交互式软件系统,系统将向用户提供一个窗口,允许用户输入一串字符,这串字符实际上是一个函数名称,这个函数是用户自己编辑的,对于系统而言事先并不知道这个函数名。系统要根据这个函数名(字符串),在用户提供的dll中找到函数指针,调用该函数。
简单说就是,我希望根据一个函数名(字符串),在dll中得到函数指针,怎么办?不能使用列表方式,因为,系统事先并不知道会有什么样的函数名称,直知道函数的参数类型和函数返回值。
回答:
你也可以采用动态调用的办法调用DLL中的函数。先使用LoadLibrary打开.dll,然后使用GetProcAddress获得DLL中的函数指针。具体作法可以参考:微软的Knowledge Base的文章:“Q117428 NFO: GetProcAddress(), Function Pointers, and C++”。需要注意的是:Win32下函数调用是区分大小写的,而且函数的参数类型和返回值必须事先确定,否则会出现错误。
wj的意见:
给你代码如下.
typedef int (*TheFunction)(....)
HINSTANCE hInstance=LoadLibrary("TheDll");
TheFunction pF=(TheFunction)::GetProcAddress("TheFunctionName");
int a=pF(.....);
就这么简单。
相关问题:
QA004549 "VB不支持函数指针,有什么方法可以解决"
QA001244 "如何在VC5.0下调用用SDK编写的DLL 函数"
此问题由李海回答。
| |
|
|
| |
|
|