写了一个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;
};
};
在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;
};
};
CoCreateInstance()创建一个接口对象时一个参数要的是接口实现类的clsid,倒数第二个要的是你的接口id.因为一个接口可能有多个实现类!所以在com中给实现类也加上了一个uuid属性。看看《com本质论》。
说得完全正确
import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(B91D4567-D492-11D3-8021-0010E3B966CE),
dual,
helpstring("ISimpleDNSClient Interface"),
pointer_default(unique)
]
interface ISimpleDNSClient : IDispatch
{
[id(3), helpstring("method Resolve")] HRESULT Resolve([in] BSTR BSearchedName, [out] VARIANT *pvFoundNames, [in, defaultvalue("C_IN")] BSTR BResourceClass, [in, defaultvalue("T_A")] BSTR BResourceType);
[id(4), helpstring("method GetDNSDomain")] HRESULT GetDNSDomain([out] VARIANT *pvDNSDomainName);
[propget, id(7), helpstring("property Separator")] HRESULT Separator([out, retval] BSTR *pVal);
[propput, id(7), helpstring("property Separator")] HRESULT Separator([in] BSTR newVal);
[id(8), helpstring("method GetEmailServers")] HRESULT GetEmailServers([in] BSTR BDomainName, [out] VARIANT *pvEmailServerNames);
[propget, id(9), helpstring("property ServerAddresses")] HRESULT ServerAddresses([out, retval] BSTR *pVal);
[propput, id(9), helpstring("property ServerAddresses")] HRESULT ServerAddresses([in] BSTR newVal);
[id(10), helpstring("method FindServerAddresses")] HRESULT FindServerAddresses(VARIANT *pvServerAddresses);
};[
uuid(B91D4558-D492-11D3-8021-0010E3B966CE),
version(1.0),
helpstring("SimpleDNSResolver 1.0 Type Library")
]
library SIMPLEDNSRESOLVERLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb"); [
uuid(B91D4568-D492-11D3-8021-0010E3B966CE),
helpstring("SimpleDNSClient Class")
]
coclass SimpleDNSClient
{
[default] interface ISimpleDNSClient;
};
};