2 cetcet8 CETCET8 于 2014.12.18 14:43 提问

c++调用自己编写的ocx库文件失败原因

#include
#include
#include "../last/LAST.h"
#include "../last/LAST_i.c"

void main(void)
{
// 声明一个HRESULT变量以及一个Simple_ATL接口的指针
IMyClass *IMyClass = NULL;

HRESULT hr = CoInitialize(NULL); // 初始化COM

// 现在初始化COM
hr = CoInitialize(0);
// 使用SUCCEEDED宏来看看我们是否能够获得接口的指针
if(SUCCEEDED(hr))
{
    hr = ::CoCreateInstance( CLSID_MyClass, //Com对象标识符
        NULL,                 //指向接口IUnknown指针
        CLSCTX_INPROC_SERVER, //运行可执行代码上下文
        IID_IMyClass,         //Com对象接口标识符
        (void**)&IMyClass);   //用来接收指向Com对象接口地址指针变量

    if(SUCCEEDED(hr))
    {
        int ReturnValue;
        IMyClass->AddNumber(5, 7, &ReturnValue);
        cout << "The answer for 5 + 7 is: " 
            << ReturnValue << endl;
        IMyClass->Release(); 
    }
    else
    {
        cout<<"--------- hr = "<<hr<<endl;
        cout << "CoCreateInstance Failed." << endl;
    }

     // 释放COM
    CoUninitialize();


}
else
{
    cout << "CoInitialize Failed." << endl;
}

}

运行的时候会返回失败"CoCreateInstance Failed." ,hr = -2147024770

这个是啥原因啊?

4个回答

devmiao
devmiao   Ds   Rxr 2014.12.18 18:34

只能知道你的com类的构造函数出错,具体你要调试下你的com对象。

lx624909677
lx624909677   Ds   Rxr 2014.12.18 14:49

GetLastError看下返回值是多少。

wangyaninglm
wangyaninglm   Ds   Rxr 2014.12.19 12:40

单步调试,看看错误信息,贴上来看看

CETCET8
CETCET8   2014.12.19 13:43

测试了下,这个程序是正常的,问题还是在于ocx库的封装的问题,多谢各位了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!