刚接触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个回答

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

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

qq_39834992
qq_39834992 那这个函数类型怎么声明指针 //声明函数指针 typedef task<bool>(*OpenAPI)(); 就是这一块
5 个月之前 回复

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

qq_39834992
qq_39834992 路径是用的绝对,而且32 64都有,hDll = LoadLibrary(_T("xxx.dll"));,也能获取到值不为空,就是函数调不出来
5 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问