Atl Com组件DLL非注册调用
来源:互联网 发布:161631人工智能怎么 编辑:程序博客网 时间:2024/05/16 11:09
1:包含头文件:
、#include “../ATLcomMfc/ATLcomMfc_i.h”
、#include “../ATLcomMfc/ATLcomMfc_i.c”
可不引入: “../ATLcomMfc/ATLcomMfc_i.c” ;那样在使用CLSID_Student, IID_IStudent需要替换为:__uuidof(Student),__uuidof(IStudent)。引入该文件的目的就是获取对应的clsid,iid。
因为头文件中有函数定义,和clsid,iid的声明;未修改接口定义的情况下,这两个文件就不会有变化。
2:定义函数指针,加载dll文件
//没有将com接口在系统注册的情况 typedef HRESULT(__stdcall * pmath)(REFCLSID, REFIID, void**); pmath fnHello = NULL; HINSTANCE hdllInst = LoadLibrary(L"..\\Debug\\ATLcomMfc.dll"); fnHello = (pmath)GetProcAddress(hdllInst, "DllGetClassObject");
3:判断是否加载成功
if (fnHello != 0) { IClassFactory* pcf = NULL; ATLTRACE(_T("\nRun to here ...\n")); HRESULT hr = fnHello(CLSID_Student, IID_IClassFactory, (void**)&pcf); ATLTRACE(_T("\nRun to here ...%d\n"), hr); if (SUCCEEDED(hr) && (pcf != NULL)) { ATLTRACE(_T("\n>>>>>>>>>>>>>> ...%d\n"), hr); CComPtr<IStudent> pGetRes2 = NULL; hr = pcf->CreateInstance(NULL, IID_IStudent, (void**)&pGetRes2); if (SUCCEEDED(hr) && (pGetRes2 != NULL)) //这里hr成功了,pGetRes2应该不会null { pGetRes2->Add(3, 4, &sum); pGetRes2->sub(10, 4, &su); } pcf->Release(); } }
3:释放dll句柄
FreeLibrary(hdllInst);
0 0
- Atl Com组件DLL非注册调用
- ATL COM 组件 调用
- atl com组件调用
- 不注册dll调用atl实现的com对象
- 怎么注册COM,ATL组件
- COM组件注册DLL不成功
- C#调用手动编写的COM组件(非ATL向导生成,参考上一篇手把手写COM组件)
- 用C#调用ATL COM组件
- 客户程序调用ATL COM组件
- VBS调用ATL编写的COM组件
- win32com调用ATL编写的COM组件
- Regsvr32和Regasm注册DLL COM组件
- .net如何调用未注册COM的非托管的dll
- .net如何调用未注册COM的非托管的dll
- Java调用dll Java调用COM组件
- OCX调用ATL COM的DLL的函数的方法
- 调用 ATL COM DLL的几种方法
- RegAsm注册DLL组件使用jacob调用的问题com.jacob.com.ComFailException: Can't co-create object
- Nginx 源码阅读笔记8 epoll 模块
- 软件测试1
- 561. Array Partition I
- PAT1044 火星数字
- 洛谷p1902 二分答案 +bfs
- Atl Com组件DLL非注册调用
- 机器学习实战第五章Logistic回归照葫芦画瓢算法实践
- eclipse配色方案
- HDU5052 树链剖分
- Mybatis 高级结果映射 ResultMap Association Collection
- Android Service详解
- Angular路由
- 迷宫问题 (广搜记录路径(数组))
- 实现二叉排序树