C++ cocreateinstance成功后访问COM方法失败
在成功的共同初始化和共同创建实例(COM服务器注册是完美的)之后。。当我访问类中的方法时,它返回错误: “XYZ.exe(OLEAUT32.DLL)中的首次偶然异常:0xC0000005:访问冲突” 通过逐步调试,我发现它在调用C++ cocreateinstance成功后访问COM方法失败,c++,visual-studio,com,C++,Visual Studio,Com,在成功的共同初始化和共同创建实例(COM服务器注册是完美的)之后。。当我访问类中的方法时,它返回错误: “XYZ.exe(OLEAUT32.DLL)中的首次偶然异常:0xC0000005:访问冲突” 通过逐步调试,我发现它在调用 // make the call SCODE sc = m_lpDispatch->Invoke(dwDispID, IID_NULL, 0, wFlags, &dispparams, pvarResult, &excepInfo, &nA
// make the call
SCODE sc = m_lpDispatch->Invoke(dwDispID, IID_NULL, 0, wFlags, &dispparams, pvarResult, &excepInfo, &nArgErr);
在OLEDIST2.CPP文件中
请帮助现在我可以想到以下检查:
- 看看你是否有机会
调试并查看
。值是否为 正确?(非空)m\u lpDispatch
- 只是检查一下是否意外
是否已被调用coninitialize()
- 只需检查COM对象是否正确 是否正确计算引用
- 转到:
Debug->Exceptions->Win32 Exceptions
- 检查“访问冲突”
实际上我使用VisualC++应用程序中的“类向导”导入了类型库,如@ MSDNLink: 这实际上导致了上述问题
后来我通过使用simple#import“xyz.tlb”导入typelibrary找到了 它生成两个文件.tlh和.tli文件,其中还包含所有类和成员函数定义。 当我在我的项目中使用这些文件时,它起了作用 对不起打扰你了 谢谢和问候Sandep r.您确实需要显示更多导致此错误的代码。是的,可能是您分配的参数不正确,当Invoke尝试传递参数时,会导致AV。您可能希望“接受”此答案,因为它记录了问题的实际解决方式。。。