社区
ATL
帖子详情
MFC调用COM组件时为什么有的电脑上需要初始化COM而有的电脑不需要?
兔子先生-zhang
2012-04-16 10:11:26
都是xp的系统,为什么mfc调用com组件的时候有的时候需要加AfxOleInit()有的时候不需要?
...全文
180
12
打赏
收藏
MFC调用COM组件时为什么有的电脑上需要初始化COM而有的电脑不需要?
都是xp的系统,为什么mfc调用com组件的时候有的时候需要加AfxOleInit()有的时候不需要?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
向立天
2012-04-19
打赏
举报
回复
[Quote=引用 11 楼 的回复:]
CoInitialize和OleInitialize一个线程只需要调用一次。
AfxOleInit是对这些API的封装。
可能你代码其他地方调用了这东东。
[/Quote]
应该是这样
AfxOleInit是对CoInitialize的封装
做了比CoInitialize更多的事
WaistCoat05
2012-04-19
打赏
举报
回复
CoInitialize和OleInitialize一个线程只需要调用一次。
AfxOleInit是对这些API的封装。
可能你代码其他地方调用了这东东。
兔子先生-zhang
2012-04-18
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
这个问题也困惑了我很久了
[/Quote]
我把微软那些莫名其妙的错误都归结于微软的大姨妈来了。。。
兔子先生-zhang
2012-04-18
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
因为有时人家调用的是::CoInitialize( NULL );/ ::CoUninitialize();
[/Quote]
额,首先,如果我早点看到你的回答的话,我就会少纠结很多,你的回答很正确,而且有时候AfxOleInit()会带来问题:
我用AfxOleInit()初始化com的时候,我的程序一会就崩溃了,我声明:不是我程序的问题(也或许是,但是经过我仔仔细细认认真真调试,我确定不是我的程序的问题),当我在我另一台机子上不加AfxOleInit()运行我的程序的时候,没有问题,所以我把问题归咎与AfxOleInit(),然后我开始在网上找替换AfxOleInit()的函数,后来也就是用你说的这个函数去替换AfxOleInit(),我的程序就健康了!!!
与你分享,如果发现AfxOleInit()初始化的时候有问题,可以试试::CoInitialize( NULL );至于为什么会这样?我也觉得这是个好问题,但是我也不知道,所以我也想问为什么会这样????
兔子先生-zhang
2012-04-18
打赏
举报
回复
[Quote=引用 2 楼 的回复:]
你什么时候看到过不需要的情况
[/Quote]
谢谢你的回答。
我有两台电脑,在其中一台上的确是不需要加入AfxOleInit()这个的,然后同样的代码,我拿到另一台机子上运行的时候,就需要加,都是xp的系统,是mfc程序。
我是见过的。。。
joyancy21
2012-04-18
打赏
举报
回复
MFC已经初始化了,不需要你去再初始化,
另外mfc初始化的不能使用多线程的com
oyljerry
2012-04-18
打赏
举报
回复
不需要调用的是其他代码或者MFC代码 帮你调用了初始化
黑泡泡选手
2012-04-18
打赏
举报
回复
没调用,是人家已经给你做好工作了·
lg0215081
2012-04-18
打赏
举报
回复
这个问题也困惑了我很久了
ouyh12345
2012-04-16
打赏
举报
回复
都需要初始化com环境
saiyaman5
2012-04-16
打赏
举报
回复
因为有时人家调用的是::CoInitialize( NULL );/ ::CoUninitialize();
向立天
2012-04-16
打赏
举报
回复
你什么时候看到过不需要的情况
Visual C++实践与提高-
COM
和
COM
+篇『PDF』
因文件超过20M不能上传,所以拆分为两个文件分次上传 第1章
COM
背景知识 1.1
COM
的起源 1.1.1 软件业面临的挑战 1.1.2 传统解决方案 1.1.3 面向对象程序设计方法 1.1.4 最终解决方案:
组件
软件 1.1.5 面向对象的
组件
模型——
COM
1.2
COM
的发展历程 1.2.1
COM
以前的对象技术:DDE、OLE 1、VBX控件 1.2.2
COM
首次亮相:OLE2 1.2.3 Microsoft拥抱Internet:ActiveX 1.2.4 更多的新名词:Windows DNA和
COM
+ 1.2.5 远程对象:ORBs和D
COM
1.2.6
COM
的最新版本:
COM
+ 1.3
COM
技术现状 1.3.1
COM
与CORBA 1.3.2
COM
与Enterprise Java Beans 1.3.3 Windows之外的
COM
小结 第2章 从C++到
COM
2.1 C++客户重用C++对象——例程DB 2.1.1 C++对象 2.1.2 客户程序 2.2 将C++对象移进DLL中——例程DB_cppdll 2.2.1 成员函数的引出 2.2.2 内存分配 2.2.3 Unicode/ASCII兼容 2.2.4 例程实现 2.2.4.1 修改接口文件 2.2.4.2 修改对象程序 2.2.4.3 修改客户程序 2.3 C++对象使用抽象基类——例程DB_vtbl 2.3.1 问题:私有数据成员被暴露 2.3.2 解决方案:抽象基类 2.3.2.1 什么是抽象基类(Abstract Base Class) 2.3.2.2 实现秘诀:虚函数(Virtual Functions) 2.3.3 使用抽象基类 2.3.4 例程实现 2.3.4.1 修改接口文件 2.3.4.2 修改对象程序 2.3.4.3 修改客户程序 2.4 改由
COM
库装载C++对象——例程dbalmost
com
2.4.1
COM
库 2.4.2 对象创建的标准入口点 2.4.3 标准对象创建API 2.4.4 标准对象注册 2.4.5 例程实现 2.4.5.1 修改接口文件 2.4.5.2 修改对象程序 2.4.5.3 修改客户程序 2.5 将C++对象变成
COM
对象 2.5.1 引用计数 2.5.2 多接口 2.5.3 IUnknown接口 2.5.4 标准类厂接口:IClassFactory 2.5.5 对象代码的动态卸载 2.5.6 自动注册 2.5.7 例程实现 2.5.7.1 修改接口文件 2.5.7.2 修改对象程序 2.5.7.3 修改客户程序 2.6 为
COM
对象添加多接口支持 2.6.1 多接口 2.6.2 DEFINE_GUID 2.6.3 例程实现 2.6.3.1 修改接口文件 2.6.3.2 修改对象程序 2.6.3.3 修改客户程序 小结 第3章
COM
基础知识 3.1 对象与接口 3.1.1
COM
对象 3.1.2
COM
接口 3.1.3 IUnknown接口 3.1.3.1 生存期控制:AddRef和Release 3.1.3.2 接口查询:QueryInterface 3.1.4 全球唯一标识符GUID 3.1.5
COM
接口定义 3.1.6 接口描述语言IDL 3.2
COM
应用模型 3.2.1 客户/服务器模型 3.2.2 进程内
组件
3.2.3 进程外
组件
3.2.4
COM
库 3.2.5 HRESULT返回值 3.2.6
COM
与注册表 3.3
COM
组件
3.3.1 实现类厂对象 3.3.2 类厂对象的创建 3.3.3 实现自动注册 3.3.4 实现自动卸载 3.4
COM
客户 3.4.1
COM
对象创建函数 3.4.1.1 CoGetClassObject 3.4.1.2 CoCreateInstance 3.4.1.3 CoCreateInstanceEx 3.4.2 如何
调用
进程内
组件
3.4.3
COM
客户
调用
进程外
组件
3.5 进一步认识
COM
3.5.1 可重用机制:包容和聚合 3.5.2 进程透明性 3.5.3 安全性机制 小结 第4章
COM
扩展技术 4.1 可连接对象机制 4.1.1 客户、接收器与可连接对象 4.1.1.1 接收器 4.1.1.2 可连接对象 4.1.1.3 客户 4.1.2 实现可连接对象 4.1.3 实现接收器 4.1.4 建立接收器与连接点的连接 4.1.5 获得出接口的类型信息 4.2 结构化存储 4.2.1 什么叫结构化存储和复合文件 4.2.2 存储对象和IStorage接口 4.2.2.1 IStorage接口 4.2.2.2 获得IStorage指针 4.2.2.3 释放STATSTG内存 4.2.2.4 枚举存储对象中的元
VC下
MFC
,
调用
Com
类型库遇到的问题的解决
VC建立一个对话框程序,引入
Com
类型库。Vs2010环境。首先,选项目打开类向导。选择“添加类”后的下拉小三角,里面有添加类型库里的
MFC
类,选择相应的
Com
类型库就生成了对应的
MFC
类,在对话框类中直接
调用
生成的类。 C
Com
Lib
Com
1;
Com
1.XXX(
C++
MFC
实战速成教程(VS2013)上
让零基础朋友快速掌握
MFC
的开发,进入到C++的Windows编程之殿堂。
MFC
规模庞大,结构复杂,导致很多初学者学习困难。本教程,则排除一切对初步者的干扰,从
MFC
庞大的结构中,单刀直入,取出最核心的类,以简明易懂的方式,剖析于学员面前。并通过纯手工方式编写
MFC
的程序,把
MFC
的基础架构,功能,由来,作用一一详细展示。以此为基础,进而把
MFC
的各个类,以及类之间的协作关系融汇贯通。
MFC
多线程
调用
COM
组件
注意
这两天使用 使用VC
调用
COM
组件
读写SQL Server 开始前
需要
调用
CoInitialize(NULL); 或者 if (!AfxOleInit()) { AfxMessageBox("
初始化
COM
失败"); } 开发完全没问题,但是在多线程里,就会出现问题,打开连接正常,读取
时
就会发生连接关闭等问题. 解决办法: 在每个线程开头都
调用
一次Co...
COM
组件
初始化
时
的错误
使用环境: Windows XP、VC++ 出现错误: 在用ADO
组件
进行数据库操作
时
,由于是
COM
组件
,
需要
初始化
COM
组件
。 使用函数:AfxOleInit() 在编译
时
出现如下错误: error C2065: 'AfxOleInit' : undeclared identifier 错误分析: 看到很多使用AfxOleInit()的场合都是
MFC
情景下,因此
需要
包含一些afx
ATL
3,245
社区成员
48,539
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章