yangbo50304 2015-04-22 02:25 采纳率: 100%
浏览 1625
已采纳

ocx的调用问题,总是弹出com_error

大家好!
我用vs2012做了一个ocx的测试,也调用regsvr32注册成功了,CocreateInstance也成功了,但是一调用接口就出现了_com_error,e.Description()返回时NULL,e.ErrorMessage()返回的是"灾难性错误"。我编译使用的x64。以下是idl的代码和cpp的部分实现

LONG CTestMFCOCXCtrlCtrl::TestFunc(LONG lParam)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());

// TODO: 在此添加调度处理程序代码

return lParam + 100;
}

namespace TestMFCOCXCtrlLib {

_COM_SMARTPTR_TYPEDEF(_DTestMFCOCXCtrl, __uuidof(_DTestMFCOCXCtrl));
_COM_SMARTPTR_TYPEDEF(_DTestMFCOCXCtrlEvents, __uuidof(_DTestMFCOCXCtrlEvents));

//
// Type library items
//

struct __declspec(uuid("1b86a820-67e0-400d-b742-012cd6923d21"))
_DTestMFCOCXCtrl : IDispatch
{
//
// Wrapper methods for error-handling
//

// Methods:
long TestFunc (
    long lParam );

};

struct __declspec(uuid("38117874-e540-42bb-9485-79a1a8a63f63"))
_DTestMFCOCXCtrlEvents : IDispatch
{};

struct __declspec(uuid("92eb1c84-343e-428a-8a70-5e67b1b94100"))
TestMFCOCXCtrl;
// [ default ] dispinterface _DTestMFCOCXCtrl
// [ default, source ] dispinterface _DTestMFCOCXCtrlEvents

//
// Wrapper method implementations
//

#include "c:\users\xxx\desktop\test\testcallocx\x64\debug\testmfcocxctrl.tli"

} // namespace TestMFCOCXCtrlLib

以下是用console窗口程序调用的代码
#import "..\x64\Debug\TestMFCOCXCtrl.ocx"
#include "x64\Debug\testmfcocxctrl.tlh"
using namespace TestMFCOCXCtrlLib;

int tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
{
_DTestMFCOCXCtrl* pActiveObj = NULL;
HRESULT hr = CoCreateInstance(
_uuidof(TestMFCOCXCtrl), NULL, CLSCTX_ALL, __uuidof(_DTestMFCOCXCtrl), (void**)&pActiveObj);
if (SUCCEEDED(hr))
{
try
{
hr = pActiveObj->TestFunc(123);
}
catch (_com_error& e)
{
const wchar_t* pDes = e.Description();
const wchar_t* pMsg = e.ErrorMessage();
wprintf(L"create instance fail message = %s!\r\n%s\r\n", pDes, pMsg);
}

pActiveObj->Release();
}
else
{
printf("create instance fail!\r\n");
}
}
CoUninitialize();
system("pause");
return 0;
}

  • 写回答

4条回答 默认 最新

  • yangbo50304 2015-05-27 02:05
    关注

    结贴吧,没有实质的内容

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器