我正在尝试按照 Simple COM Tutorial 的步骤进行操作这对我来说看起来不错且合乎逻辑。我通常会回避使用向导,但共识似乎是执行 COM 的最佳方式。
总结
- 使用向导创建 ATL 项目
- 使用“添加类”对话框创建一个 ATL 简单对象(示例中的
SimpleChatServer
) - 导航到 ClassView,右键单击对象的接口(interface),添加方法(示例中的
CallMe
) - 教程给出了一个方法体来使用
- 编译
但是,我的编译失败了,因为
error C2509: 'CallMe' : member function not declared in 'CSimpleChatServer'
向导有问题吗?我本以为 VS 会自动在 CSimpleChatServer 中声明 CallMe 方法,并为我提供一个方法 stub 来添加实现,但它没有。
(与本教程的另一个区别是类浏览器不显示类 CSimpleChatServer,您可能认为它会显示。这可能是因为我禁用了智能感知?希望是一个单独的问题)。
那么,要做什么,在哪里以及如何定义和声明具有功能的实际 C++ 方法?
最佳答案
ATL 向导通常会在 header 中声明方法(使用 STDMETHOD(BLah)(...)
),提供 stub 实现(使用 STDMETHODIMP CFoo::Blah(. ..)
) 并将声明添加到 IDL 文件中。
但是,我记得当你手动修改头文件时,它会变得困惑,只会将声明添加到 IDL 中,而不会添加到 .h
和 .cpp
文件。如果我是你,我会从头开始(并避免使用 COM,除非你有充分的理由不这样做)。
当您获得经验时,您将摆脱生成方法的向导(对于类,它可能太复杂了)。
关于c++ - 无法使简单的 COM 项目工作 : where and how to put implementation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8509157/