我正在学习如何实现进程外COM服务器并遇到this article。
我可以构建它,它运行正常,但代理/存根DLL在哪里?我只能看到IDL文件,在构建期间从中生成代理/存根代码。但是如何构建DLL,它在哪里?
答案 0 :(得分:4)
简短的回答是所有接口都标记为“oleautomation”,因此oleaut32.dll执行编组,因为COM知道如何编组接口中使用的所有类型。
如果缺少“oleautomation”,或者指定了一个类型,COM默认情况下不知道如何编组(see the list here),则需要您的非默认封送程序及其存根。
答案 1 :(得分:2)
您需要代理/存根项目来帮助COM封送您的界面。使用Visual Studio创建ATL C ++项目时,通常会有一个自动创建PS后缀的辅助项目,这是您的Proxy / Stub DLL。但是,没有它你可能会做得很好(我个人从来没有必须构建和使用它,即使我必须处理自定义编组之类的事情)。如果您为项目提供类型库,则会注册并满足某些条件 - COM将为您提供自动代理/存根对。
奖金阅读: