C++ Can';不能让简单的COM项目工作:在哪里以及如何实施?

C++ Can';不能让简单的COM项目工作:在哪里以及如何实施?,c++,visual-studio-2008,dll,com,atl,C++,Visual Studio 2008,Dll,Com,Atl,我试着按照一个对我来说很好而且合乎逻辑的步骤去做。我通常会避免使用向导,但大家一致认为这是最好的方法 概括 使用向导创建ATL项目 使用“添加类”对话框创建ATL简单对象(示例中为SimpleChatServer) 导航到ClassView,右键单击对象的界面,添加方法(CallMe,在示例中) 本教程提供了一个要使用的方法体 编撰 然而,我的编译失败了,因为 error C2509: 'CallMe' : member function not declared in 'CSimpleChat

我试着按照一个对我来说很好而且合乎逻辑的步骤去做。我通常会避免使用向导,但大家一致认为这是最好的方法

概括

  • 使用向导创建ATL项目
  • 使用“添加类”对话框创建ATL简单对象(示例中为
    SimpleChatServer
  • 导航到ClassView,右键单击对象的界面,添加方法(
    CallMe
    ,在示例中)
  • 本教程提供了一个要使用的方法体
  • 编撰
  • 然而,我的编译失败了,因为

    error C2509: 'CallMe' : member function not declared in 'CSimpleChatServer' 
    
    巫师有什么问题吗?我本来希望VS在CSimpleChatServer中自动声明CallMe方法,并为我提供一个方法存根来添加实现,但它没有这样做

    (与本教程的另一个不同之处是,类浏览器没有显示类CSimpleChatServer,您可能会这么认为。这可能是因为我禁用了intellisense?希望是另一个问题)


    <> >,如何做,在哪里以及如何用函数定义和声明实际的C++方法?

    < p>,ATL向导通常在报头中声明方法(用<代码> STDFIDEA(BLAH)(…)>代码>),提供存根实现(用<代码> STDMEODIMP CFO::BLAH(…)>代码>)并将声明添加到IDL文件。

    但是,我记得,当您手动修改头文件时,它会变得混乱,只会将声明添加到IDL中,而不会添加到
    .h
    .cpp
    文件中。如果我是你,我会从头再来一次(并且避免使用COM,除非你有充分的理由不这么做)


    当您获得经验时,您将摆脱向导来生成方法(对于类,它可能太复杂了)。

    ATL向导通常会在头中声明方法(使用
    STDMETHOD(BLah)(…)
    ),提供存根实现(使用
    STDMETHODIMP CFoo::BLah(…)
    )并将声明添加到IDL文件中

    但是,我记得,当您手动修改头文件时,它会变得混乱,只会将声明添加到IDL中,而不会添加到
    .h
    .cpp
    文件中。如果我是你,我会从头再来一次(并且避免使用COM,除非你有充分的理由不这么做)


    当您获得经验时,您将摆脱向导来生成方法(对于类来说,它可能太复杂了)。

    所以-这是与intellisense有关的。由于需要编译boost::geometry,我通过重命名feacp.dll禁用了intellisense。这导致COM添加类对话框无法将存根方法添加到我的
    .h
    .cpp
    文件中


    C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\feacp.dll
    的原始名称重新命名似乎可以解决这一问题。

    所以-这与intellisense有关。由于需要编译boost::geometry,我通过重命名feacp.dll禁用了intellisense。这导致COM添加类对话框无法将存根方法添加到我的
    .h
    .cpp
    文件中


    C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\feacp.dll
    返回其原始名称似乎可以解决此问题。

    谢谢,这有助于了解方法存根应该在那里。所以向导坏了-我现在已经找到了一个修复方法。谢谢,这有助于知道方法存根应该在那里。所以向导坏了-我现在已经找到了解决方法。