有个公共IDL文件base.idl, 已经编译成base.tlb
他包含了一个IDL:device.idl, 因为使用了里面的IDevice接口作为参数现在有一个ATL工程, 新建一个COM接口IManager, 然后在CManager右击"实现接口"可是现在IManager也需要IDevice接口作为参数, 所以同样的包含device.idl文件,
编译时发生: IDevice重定义这个时候怎么办? 难道只能把IDevice*参数改成 IUnkown* 接口指针?
他包含了一个IDL:device.idl, 因为使用了里面的IDevice接口作为参数现在有一个ATL工程, 新建一个COM接口IManager, 然后在CManager右击"实现接口"可是现在IManager也需要IDevice接口作为参数, 所以同样的包含device.idl文件,
编译时发生: IDevice重定义这个时候怎么办? 难道只能把IDevice*参数改成 IUnkown* 接口指针?
如果不加, ATL工程的COM接口IManager的参数使用了 device.idl 里面的接口啊
否则ATL工程里面的IDL将无法编译通过
尽量都使用tlb,少用原始的idl。
那请问 接口的方法 使用了device.idl里面的接口作为参数用 importlib("device.tlb");行吗? 是不是得放到 接口定义得前面呢?
我看IDL精髓 说这样会造成编译出来得tlb会很大?
不大吧,里面并没有包含进所引入的库中的内容,只是给个声明,让IDL能编译通过罢了。