热情软件屋

 

根据一个函数名,在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 函数"

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio