用visual c++实现COM对象的声明/定义和实例化
declaration/definition and instantiation of COM objects with visual c++?
我需要实例化com对象,它是.dll,并且在visual c++中的本地机器上,我知道它可以通过使用CoCreateInstance("clsid")来完成,但我对声明感到困惑。所以有人能解释所有涉及的步骤吗?用于后期结合以及早期结合
- 是否需要任何导入/包含
- 如何声明com对象
- createinstance之前需要的任何其他步骤(例如CoInitialize?)
或提供任何涉及逐步代码的特定参考
首先必须调用CoInitialize
,如果初始化成功,不要忘记调用CoUnitialize
。
因此,您的代码将具有以下结构:
HRESULT hr = CoInitialize(NULL);
if (SUCCEEDED(hr))
{
try
{
CoCreateInstance(...)
// ...
}
catch (_com_error &e)
{
//...
}
CoUninitialize();
}
有关详细信息,请访问MSDN。我建议您先从COM库开始,然后在使用CoInitialize和CoCreateInstance函数之前,应该先阅读一些关于它们的内容。
本教程也可以帮助您:COM简介-它是什么以及如何使用它。
-
非常推荐
#import
。如果您使用#import导入typelib,那么您将使用Native COM框架,它隔离了一些粗糙的细节,使生活总体上更轻松。 -
在Native COM中,类似于以下内容:
库名称::IMyInterface Ptr pInterface;
在原始C++中:
IMyInterface *pInterface;
但请参阅上文。
- 在程序开始时调用CoInitialize(),在程序结束时调用CoUninitialize()。如果在DLL中运行,那么它要复杂得多
相关文章:
- 如何在C++中声明/定义相互依赖的模板?
- C++概念是否允许我的类在声明/定义中指定它满足某些概念?
- MSVC:无法识别的模板声明/定义(使用 Clang/GCC 编译)
- 我可以重用同一个模板来声明/定义多个东西吗(而不复制模板代码)
- C++-模板类中模板函数的单独声明/定义
- 在C 中使用继承时,请避免使用未缴纳的函数声明/定义
- C++模板能否确定所声明/定义的实例是否为常量
- 如何在程序中声明/定义一次并在两个类中使用映射列表
- LBNF,C函数声明/定义,减少冲突
- 声明/定义返回具有自动返回类型的 valarray 的函数时的隔离错误
- #用{}和声明定义混淆
- CTOR 声明/定义中接受的 const 限定符(LLVM 错误?)
- C++ 从一个源文件中声明/定义的变量从另一个源文件访问另一个源文件
- 无法识别的模板声明/定义
- 只在.cpp中声明/定义静态方法可以吗
- 声明/定义自定义类定制对象的正确方法
- typedef声明定义未命名类时链接失败
- 用visual c++实现COM对象的声明/定义和实例化
- VS 2012中的显式模板声明/定义
- 命名空间内的友元函数声明/定义