考虑我是Windows环境和COM编程的新手.
我必须自动化应用程序(CANoe)访问.CANoe将自身公开为COM服务器,并提供CANoe.h,CANoe_i.c和CANoe.tlb文件.任何人都可以指定如何编写C++客户端,以访问对象,应用程序的功能.
另外,请指定如何从C++访问tlb文件中的代码.
Visual Studio有很多内置支持,可以将类型库导入到C++项目中并使用这样定义的对象.例如,您可以使用该#import指令:
#import "CANoe.tlb"
Run Code Online (Sandbox Code Playgroud)
这将导入类型库,并将其转换为头文件和实现文件 - 这也将导致实现文件与您的项目和头文件一起构建,所以这是很多神奇的东西.
然后,您将获得用于类型库中定义的类型和对象的智能指针包装器的大量typedef.例如,如果有一个CoClass调用Application它实现了接口IApplication,你可以这样做:
ApplicationPtr app(__uuidof(Application));
Run Code Online (Sandbox Code Playgroud)
这将导致在运行时创建coclass应用程序并将其绑定到变量app,您可以像这样调用它:
app->DoSomeCoolStuff();
Run Code Online (Sandbox Code Playgroud)
通过检查COM调用的结果并根据需要抛出相应的_com_error异常来完成错误处理,这意味着您需要安全地编写异常.