Student_2017
2017-03-04 07:25
采纳率: 75%
浏览 999

MFC C++ 有关接口调用函数的几个问题

希望能够一句一句的解释,谢谢各位大神了。
HMODULE hDll =( HMODULE )LoadLibrary( "COMObj.dll" );
MYCREATEINSTANCE MyCreate = (
    MYCREATEINSTANCE )GetProcAddress( hDll,"MyCreateInstance" );
IUnknown * piUnknown = MyCreate();
IMath * piMath = NULL;
piUnknown->QueryInterface(IID_IMath,(LPVOID*)&piMath);
piUnknown->Release();
return piMath;
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • blownewbee 2017-03-04 15:35
    已采纳
     HMODULE hDll =( HMODULE )LoadLibrary( "COMObj.dll" ); //加载com对象,返回dll的句柄
    MYCREATEINSTANCE MyCreate = (
        MYCREATEINSTANCE )GetProcAddress( hDll,"MyCreateInstance" ); 创建MyCreateInstance函数指针的实例,叫MyCreate
    IUnknown * piUnknown = MyCreate(); 调用MyCreate函数指针,也就是调用这个函数,创建com对象
    IMath * piMath = NULL;
    piUnknown->QueryInterface(IID_IMath,(LPVOID*)&piMath); 从IUnknown接口调用QueryInterface得到IMath,IID_IMath是progid
    piUnknown->Release(); 释放
    return piMath; 返回Math对象指针
    

    QueryInterface进一步介绍
    http://www.cnblogs.com/fangyukuan/archive/2010/06/02/1750377.html

    点赞 评论
  • oyljerry 2017-03-04 07:57

    加载dll,获取对应句柄,然后根据函数名获取函数地址
    调用函数,获取实例指针,再依次调用对象的成员函数,获取接口,返回接口对象

    点赞 评论
  • qq_37755871 2017-03-04 08:08

    你好,你知道怎么弄积分的吗?

    点赞 评论
  • 微wx笑 2017-03-05 01:56

    理解这个要理解COM组件原理才好。
    参考:http://blog.sina.com.cn/s/blog_5698c05f0100lp1t.html

    点赞 评论

相关推荐 更多相似问题