描述:
写了一个COM
在IDL文件中发现类型库中的UUID与接口中的UUID不一样
而其他的COM组件都一样
是为什么啊
我的IDL文件:
import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(BE8EB1FC-2BE5-4FF3-9966-ECD5A9162973),
helpstring("IComDemomo Interface"),
pointer_default(unique)
]
interface IComDemomo : IUnknown
{
[helpstring("method GetMonth")] HRESULT GetMonth([in] BSTR sdgf);
};
[
uuid(D6B8015B-7881-4423-AD58-93BC3662EFFE),
version(1.0),
helpstring("ComDemo2 1.0 Type Library")
]
library COMDEMO2Lib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
uuid(2EFC22CA-6AC8-4115-AC04-D2BC025782B4),
helpstring("ComDemomo Class")
]
coclass ComDemomo
{
[default] interface IComDemomo;
};
};
解决方案1:
兄台,宁信书则不如无书。楼上说的对,是因该不同的。所谓的uuid也就是个唯一标志符而已,就象你可以用zhanvi(追梦)来唯一标识你一样。如果有另外的一个人也叫zhanvi(追梦)。要调用到zhanvi(追梦)来执行操作的就会出现问题。
解决方案2:外面的是接口对象,库内的是这个接口的实现类,两个不同的对象应该是不一样的uuid啊
解决方案3:类型库、COM类和接口等都有UUID
解决方案4: 哈哈!一个是iid接口id,一个是clsid实现类id.eg:
CoCreateInstance()创建一个接口对象时一个参数要的是接口实现类的clsid,倒数第二个要的是你的接口id.因为一个接口可能有多个实现类!所以在com中给实现类也加上了一个uuid属性。看看《com本质论》。
当然不能一样