qq_39834992
qq_39834992
采纳率100%
2019-11-11 12:12

刚接触MFC,弄半天了,大神一看就懂,这个函数,怎么声明一个函数指针接收啊,在线等

原型:
Task<bool>^ OpenAsync(
    Action<Task<bool>^>^ onFinish = nullptr
)


代码:
//声明函数指针  
    typedef task<bool>(*OpenAPI)();

    //创建dll句柄  
    HINSTANCE hDll;
    //装载dll  
    hDll = LoadLibrary(_T("xxx.dll"));
    if (NULL == hDll)
    {
        AfxMessageBox(_T("DLL加载失败!"));
    }
    //检索指定DLL中的输出库函数地址  
    OpenAPI OpenAsync1 = (OpenAPI)GetProcAddress(hDll, "OpenAsync");
    if (NULL == OpenAsync1)
    {
        AfxMessageBox(_T("DLL内部函数调用失败!"));
    }

在声明函数指针的时候不知道怎么声明,LoadLibrary可以得到,GetProcAddress一直为0

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • YJB666 虛擬時間SOS 2年前

    将MFC工程属性设置成动态库和多字节;
    程序和dll都是32bit或者都是64bit的可以调用动态库; 不同不能调用;

    HINSTANCE hDll=LoadLibrary("xxx.dll");
    FARPROC fpFun = GetProcAddress(hDll,"CT_open");

    点赞 评论 复制链接分享
  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 2年前

    程序和dll都是32bit或者都是64bit的么?不同不能调用
    hDll = LoadLibrary(_T("xxx.dll"));
    这里写完整的路径看看
    OpenAPI OpenAsync1 = (OpenAPI)GetProcAddress(hDll, "OpenAsync");
    有没有叫做OpenAsync的函数,函数参数是不是和你程序定义的一致

    点赞 评论 复制链接分享