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
SimpleChatServer
)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
返回其原始名称似乎可以解决此问题。谢谢,这有助于了解方法存根应该在那里。所以向导坏了-我现在已经找到了一个修复方法。谢谢,这有助于知道方法存根应该在那里。所以向导坏了-我现在已经找到了解决方法。