社区
ATL
帖子详情
能在一个IDL文件中写两个coclass么?
firecityplans
2009-10-21 09:13:58
在COM编程中,要用到外部组件与内部组件,因此要产生两个DLL文件。
想在一个类型库中写两个coclass。以期产生两个dll文件。不知这样行不?因为要共用共同的接口。
同时这两个组件是应当分别创建在两个project中的。只要在注册表中注册,这样的话外部组件调用内部组件应当是没问题的吧?
...全文
132
5
打赏
收藏
能在一个IDL文件中写两个coclass么?
在COM编程中,要用到外部组件与内部组件,因此要产生两个DLL文件。 想在一个类型库中写两个coclass。以期产生两个dll文件。不知这样行不?因为要共用共同的接口。 同时这两个组件是应当分别创建在两个project中的。只要在注册表中注册,这样的话外部组件调用内部组件应当是没问题的吧?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
firecityplans
2009-10-21
打赏
举报
回复
[Quote=引用 2 楼 rendao0563 的回复:]
一个类型库N个接口是可以的.但是2个dll就是两个类型库了.
[/Quote]
也就是说一个类型库里不能有两个coclass了?
下面这样写行不?
import "oaidl.idl";
import "ocidl.idl";
[
uuid(2B35F686-BA52-491a-A1FB-AF71605BE166),
helpstring(" interface IX"),
object,
pointer_default(unique)
]
interface IX : IUnknown
{
HRESULT Fx() = 0;
};
[
uuid(9970D64A-22BB-4f54-A55B-29D8A8708D73),
helpstring(" interface IY"),
object,
pointer_default(unique)
]
interface IY : IUnknown
{
HRESULT Fy() = 0;
};
[
uuid(1B17496D-7195-483a-98EB-1BFA9EAA2F4F),
helpstring(" interface IZ"),
object,
pointer_default(unique)
]
interface IZ : IUnknown
{
HRESULT Fz() = 0;
};
[
uuid(20963F69-E225-4901-8E91-17E18656EBB8),
helpstring("aggratelib 1.0 type library !"),
version(1.0)
]
library aggrationLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
uuid(c159eb15-f469-45c6-a06a-0a5b1f94d741),
helpstring(" aggration class ")
]
coclass aggration
{
[default] interface IX;
};
[
uuid(0300B615-C7E5-4d4b-8414-80876187C170),
helpstring(" aggrate2 class ")
]
coclass aggration2
{
[default] interface IY;
};
};
rendao0563
2009-10-21
打赏
举报
回复
一个类型库N个接口是可以的.但是2个dll就是两个类型库了.
jameshooo
2009-10-21
打赏
举报
回复
可以
rendao0563
2009-10-21
打赏
举报
回复
真不知道你怎么理解成 一个类型库里不能有两个coclass
rendao0563
2009-10-21
打赏
举报
回复
类型库和dll是一对一的关系.
类型库和接口(应该就是你说的那个coclass)是一对多.
11.编写COM常用
IDL
指令和注意事项详解
之前讲的COM都是手动编写的,上一节讲到借助MFC和下一节要讲到的ATL这些框架可以大大减少代码编写量,然而这还不够,还是太麻烦,因为COM遵循一套标准的规则,因此微软推荐通过编写
IDL
的方法来编写COM,使用
IDL
描述我们想要的COM形式和结构,然后由工具来做实际编写工作。
.
idl
文件
解析
1、`// atlib.
idl
: atlib的
IDL
源 // // 此
文件
将由 M
IDL
工具处理以 // 产生类型库(atlib.tlb)和封送处理代码。 import “oa
idl
.
idl
”; import “oc
idl
.
idl
”; [ object, //指明com对象 uuid(FCF44EA5-5E02-44CB-8531-06A1A9C2...
一个
关于
IDL
的错误,实难解答,请指点
IDL
文件
是这样的: 其中IA 有
一个
属性(对应
两个
方法),IB public IA 在vc.net 中编译发现 错误 Layout failed:IA 三种修改可使编译通过: 1)将IA中
两个
方法去掉
一个
,或全去 2)IB不从IA中public 3)将IA
两个
方法改为其他方法; 综合分析,似乎是这
两个
方法很“特别”,但怎样特别呢?是M
IDL
的
一个
bug吗? 万望指点迷津。 附:...
转:
IDL
接口描述语言和COM接口COM组件
https://blog.csdn.net/rankun1/article/details/50850593接口描述语言(Interface description language,缩写
IDL
)c++写的接口,只能c++和c识别,为了接口的通用性,让所有的语言都通用的定义使用接口引入
IDL
,使用
IDL
定义接口以后,用M
IDL
编译为c++可用的接口定义 接口描述语言 -
IDL
(Interfac...
IDL
接口描述语言和COM接口COM组件
接口描述语言(Interface description language,缩写
IDL
) c++写的接口,只能c++和c识别,为了接口的通用性,让所有的语言都通用的定义使用接口 引入
IDL
,使用
IDL
定义接口以后,用M
IDL
编译为c++可用的接口定义 7 接口描述语言 -
IDL
(Interface Definition Language ) 7.1
IDL
和M
IDL
ATL
3,245
社区成员
48,539
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章