更新:2007 年 11 月
QStat 示例说明如何使用 C++ 创建一个 DLL 来包装对 COM 对象的访问并将它的功能向 .NET Framework 客户端公开。
![]() |
---|
提供该示例代码是为了阐释一个概念,并不代表着最安全的编码实践,因此不应在应用程序或网站中使用该示例代码。对于超出本示例代码的预期用途以外的使用所造成的偶然或继发性损失,Microsoft 不承担任何责任。 |
获取示例和安装示例的说明:
在 Visual Studio 的“帮助”菜单上,单击“示例”。
有关更多信息,请参见定位示例文件。
示例的最新版本和完整列表可以从 Visual Studio 2008 Samples page(Visual Studio 2008 示例页面)联机获取。
还可以在计算机的硬盘上查找示例。默认情况下,示例和自述文件将复制到 \Program Files\Visual Studio 9.0\Samples\ 下的文件夹中。对于 Visual Studio 速成版,所有示例都位于联机位置。
生成并运行示例
生成示例
在 Visual Studio IDE 中,加载解决方案文件 QStat.sln。
在解决方案资源管理器中,右击解决方案 Qstat。
在快捷菜单上单击“生成解决方案”。
运行示例
在解决方案资源管理器中右击 netClient 项目。
在“调试”菜单上单击“启动”。
客户端启动后,将有一系列消息打印到控制台,通知您对业务逻辑的调用。
![]() |
---|
若要获得有关组件间交互的更多信息,请通过设置断点或者使用“调试”菜单单步执行或逐过程调试示例代码来逐句通过代码。 |
项目说明
此示例主要说明从 COM 和 .NET Framework 客户端两者访问业务逻辑,而不是业务逻辑本身的实现,因此相对而言我们对业务逻辑并不感兴趣。实际上,此示例中的业务逻辑执行简单的算法(几何、调和及二次平均计算),并将结果返回给客户端。
好的编程做法是将业务逻辑同公开该业务逻辑的框架(此示例中为 COM)分开。但是,此示例假定:业务逻辑已经直接在将被使用的 COM 对象内实现,并且除了通过此 COM 对象外,没有其他方法访问基础业务逻辑。
此示例创建一个包装 DLL,它通过 #import 使用 COM 对象,并公开一个将由 .NET Framework 客户端使用的 .NET Framework 类。这通过定义本机 C++ 类 nativeMeanCalc 来完成,该类包含一个通过 #import 引入的 COM 聪明指针数据成员。定义了一个包含指向本机 C++ 类的指针的 .NET Framework 类。.NET Framework 类 netMeanCalc 包含指向 nativeMeanCalc 对象的指针,此对象完成目标 COM 对象的路径。netMeanCalc 是 .NET Framework 客户端将要使用的公共类。
有两个客户端项目:
nativeClient 是 COM 客户端,且是用本机 C++ 实现的。
netClient 是用 C++ 的新语法编写的。
类和关键字
此示例说明以下关键字:
__gc、#using、#import、try、catch、_com_error、Console::WriteLine