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 python使用pulp线性优化时报错
  • ¥15 开源或低价数据中台哪个最好
  • ¥15 arduino编程出现字符串疑似覆盖现象
  • ¥15 我的b站在没有碰到屏幕的情况下偶尔会自动跳出进度条,就像在屏幕上点了一下一样,但我并没有点。而且视频进度并没有变。这可能是什么原因造成的?
  • ¥30 STK matlab python仿真
  • ¥15 关于IMageEnView 图标定位问题
  • ¥20 求解答(matlab)
  • ¥30 ffmpeg库使用过程中遇到的问题
  • ¥15 pyqt5 中python如何通过Qtwebchannel主动发消息给web前端
  • ¥15 关于HTML中title获取xml内容的问题