佚名通过本文主要向大家介绍了vtable,atl no vtable,vtable.gfs new,mono class vtable,26uuucom的主页等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: COM的vtable在哪里?
描述:
解决方案1:
描述:
进程内COM组件的每个方法有一个Vtable,其中保存的就是各个方法的入口地址。
而COM组件应该在一个进程中只被加载一次。
那么,是不是说同一个组件、同一个接口的Vtable就只有一个了呢?
我在一个c++写的D3D程序中先创建一个D3D COM对象(OA)。然后加载一个DLL,由这个DLL再创建一个D3D COM对象(OB)。这时却发现OA和OB同一个接口的Vtable指向不同位置,OA的vtable指向进程的映象空间,OB的vtable则指向DLL的映象空间,而不是指向D3D9.dll的映象或是Ole.dll的映象。这是什么原因呢?
解决方案1:
mark
帮顶,总算有个有技术含量的问题了。
解决方案3: A a,b;
A *pa = &a;
A *pb = &b;
这里pa,pb的地址是一样的吗?
答案是:不一样的~
---------------------
我是说vtable的地址,对象的地址当然不一样。
你看看这样是不是一样:
(int*)*(int*)pa;
(int*)*(int*)pb;
您可能想查找下面的文章:
- undefinedclass'ATL_NO_VTABLE'
- ATL_NO_VTBL是作什么的?
- 用ATL::CString,在哪里设置ATL_CSTRING_NO_CRT
- atl_no_vtable
- 既然Com组件是基于虚表来做QueryInterface,为什么实现类的类型却是:classATL_NO_VTABLE
- 流媒体程序//这个类ATL_NO_VTABLECUserManager是什么作用?
- 一段代码,编译不过去,但是加上__declspecnovtable就编译过去了,为什么?
- Dll影响vtable?
- 用ATL编写COM组件时,在类前面都有一个宏ATL_NO_VTABLE,能说说它的作用么?
- COM的vtable在哪里?