问题描述
- 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
这个是啥原因啊?
解决方案
只能知道你的com类的构造函数出错,具体你要调试下你的com对象。
解决方案二:
GetLastError看下返回值是多少。
解决方案三:
单步调试,看看错误信息,贴上来看看
解决方案四:
测试了下,这个程序是正常的,问题还是在于ocx库的封装的问题,多谢各位了
时间: 2024-11-02 12:34:38