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

问题描述

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

atl com c++ ocx-c++调用自己编写的ocx库文件失败原因的相关文章

动态调用-C++编写的动态库,可不可以只有一个dll文件。

问题描述 C++编写的动态库,可不可以只有一个dll文件. 用C++编写动态库,根据我现阶段的学习,感觉.h..lib..dll三个文件都要,如果采用动态链接,一般需要.h和.dll文件(动态库中含有类),而静态调用则需要.h和.lib文件,可不可以只要一个dll文件,就可以拿给别人使用?求解. 解决方案 就是一个,你编译后就是一个,给别人 解决方案二: 数量不确定的,一个也可以啊. 解决方案三: 如果只给dll的话,就只能动态的加载,如果为了方便静态加载dll的话,就需要输出lib和dll一起

jacob调用vc++编写的ocx控件

问题描述 packagemytest;importcom.jacob.activeX.*;importcom.jacob.com.*;publicclassMyJacobTest{publicvoidInitCom(StringsIPPort,intuNum,StringdisConnIP){/***获得控件dispid***/ActiveXComponentacomx=newActiveXComponent("ENCRYPTEROPERATI.EncrypterOperatiCtrl.1&qu

制作MSN机器人,如何使用Vc.Net调用C#编写的.net库

问题描述 我想编写一个MSN机器人,并找到相应的MSN协议库,就可以不用研究MSN的协议了.但此MSN协议库(DotMsn)是用C#编写的.net的库,我现在由于对C#不熟悉,还想用VC编写.所以决定使用VC.net,来调用此.net的库.但是我并不太清楚,VC.net如何来调用此.net的库(DotMsn)不知哪位能提供一个例子程序,如何调用.net的库下面是C#调用此库的例子程序的部分代码usingSystem;usingSystem.Drawing;usingSystem.Collecti

xerces 开源库-vc6 封装的atl ocx 控件 可以封装 底层开源库吗?

问题描述 vc6 封装的atl ocx 控件 可以封装 底层开源库吗? 我封装了一个ocx插件,并形成了cab格式,然后进行了数字签名,js调用ok: 由于需要ocx解析xml格式的字符串,在ocx中调用了 xerces-c_2_7.dll 这个库文件,然后通过js调用的时候,ie就卡在了解析xml的接口里了: xerces-c_2_7.dll 这个库一起一直在服务器里进行正常调用,是完全正常的,我在inf文件里已经加入了 xerces-c_2_7.dll 的信息,如下:[Version] si

vc++-VC++如何调用C#编写的串口驱动 DLL

问题描述 VC++如何调用C#编写的串口驱动 DLL 最近弄一个串口打印的项目,我一直是用VC++进行开发的,c#没用过,但是对方提供的打印机的DEMO却是C#的例程,本来想着DLL是跨语言的,应该没什么问题,但是我用vc++编写了一个测试程序,确没有任何数据输出,很简单的例程,我按流程在上面加了打开串口,设置串口,发送数据,关闭串口.这几步都是用的现成的dll里面的函数,他把串口的数据操作也封装起来了,然后我就想到,在c#中是可以直接用库函数对串口读写,是不是因为这个原因,导致我在vc++中不

oracle 存储过程 调用 自己编写的DLL文件

问题描述 我现在有个需求,需要用oracle的存储过程调用 自己编写好的DLL文件,请问各位大神有什么好的方法吗?DLL文件编写语言有要求吗(本人目前想用C#)?ORACLE方面要如何定义和执行编译好的DLL文件中的方法呢?请帮忙详细述说下! 解决方案 建议你不要这么去调用,方在存储过程可扩展性,可移植性都较差,你可以将你存储过程封装成服务再去做逻辑编排

asp.net c# webForm中 怎样在服务端调用c++builder编写的ocx控件,急...

问题描述 asp.netc#webForm中怎样在服务端调用c++builder编写的ocx控件 解决方案 解决方案二:自动顶解决方案三:该回复于2016-01-31 23:32:46被版主删除

C++编写安全OCX,IE不弹出安全提示

下面将分别介绍在MFC ActiveX和ATL中如何标记一个控件为安全的控件.        要标记一个MFC ActiveX控件为安全,可以仿照下面代码修改而得:   // CardScan.cpp : CCardScanApp 和DLL 注册的实现.#include "stdafx.h"#include "CardScan.h"#include "comcat.h"#include "strsafe.h"#include 

ocx-VS2010怎么使用OCX,调用里面的方法?

问题描述 VS2010怎么使用OCX,调用里面的方法? 能告诉我一下具体步骤,和调用里面的方法? 解决方案 工具栏右键,加载项,加入ocx组件,这样就和使用其他的一样了 解决方案二: 一种是增加类,导出ActiveX接口! 二是跟调用dll类似! 解决方案三: 在项目-添加引用,选择com选项卡,点浏览,找到你的ocx,确定即可. 解决方案四: import导入对应的com组件,然后就会生成包装类,你就可以调用类的方法