【发布时间】:2011-01-23 13:44:15
【问题描述】:
我希望在我的 C++ 库中使用 COM dll。 我想到的方法是#import dll 的 .tlb 文件,我这样做了:
#import "mycom.tlb" no_namespace
问题是,我不太清楚在哪里放置这个声明。它应该在H文件还是CPP文件中?或者可能是 stdafx.h 文件? 我试着把它放在 .cpp 文件中,只是为了测试。
在 H 文件中我声明了这个成员:
ILogicSecuredPtr m_pbLogic;
(其中 ILogicSecured 是我想在我的 COM dll 中使用的接口)
然后我在构造函数中添加了这个来实例化接口:
CoInitialize(NULL);
m_pbLogic(__uuidof(LogicSecured));
(其中 LogicSecured 是实现接口的对象的名称)
在我添加的析构函数中:
CoUninitialize();
但是,无论我尝试将#import 声明放在哪里,这都不会编译。 它只是无法识别 ILogicSecured 对象。 我在 H 文件中收到此错误:
Error 2 error C2146: syntax error : missing ';' before identifier 'm_pbLogic'
我还应该提到,当我在 ILogicSecuredPtr 声明上按 F12(在 Visual Studio 中)时,它会将我带到 tlh 文件就好了。所以我知道它可以识别它。
我在这里做错了什么?
非常感谢。 罗伊
【问题讨论】: