C++ VS 2008中ATL的创建,使用。并在C++项目以及C#项目中进行调用测试
2011-11-18 15:44
886 查看
一、前言
1、本回讲解的是在 VS 2008 下的使用ATL. 并使用Win 32 Console Application进行测试以及C#项目进行测试(调用COM).
2、这第一个组件,除了所有 COM 组件必须的 IUnknown 接口外,我们再实现一个自己定义的接口 IFunTest,它有一个简单的函数: Sum()完成两个数值的加法
3、ATL的介绍
ATL本来被设计成一种书写快捷的小的COM组件。
ATL特性:(1)C++能完成的所有功能。
(2)没有外部程序库,除非你想要使用它。
(3) 一种抽象对象和接口的相对高级的方式。
(4)类集合的自动处理,目标创建,参考计算和查询界面。 标准接口的实现。
(5) 用C++写一个独立的ActiveX控件,你必须亲自书写实现每个接口的每种方法。
二、1、创建ATL Project
步骤1:建立一个解决方案。 步骤2:在 该解决方案中,新建一个 vc++ 的 ATL 项目。见下图
选择Dynamic-link library(DLL)
2、向工程中添加ATL对象
选择ATL Simple Object
名字为FunTest
Interface选择Custom
3、在接口中添加方法.(在类视图中)
方法名为Sum,参数如下图,有三个参数
接口方法的实现, 这个太简单了
三、新建Win 32 Application进行测试
显示:
四、在C# 项目中进行测试步骤
1、添加引用(选择Com),找到对应的DLL
2、引用命名空间,(引用对应的命名空间)
3、new实例,调用函数
可参考:.Net 互操作性/article/4782965.html
1、本回讲解的是在 VS 2008 下的使用ATL. 并使用Win 32 Console Application进行测试以及C#项目进行测试(调用COM).
2、这第一个组件,除了所有 COM 组件必须的 IUnknown 接口外,我们再实现一个自己定义的接口 IFunTest,它有一个简单的函数: Sum()完成两个数值的加法
3、ATL的介绍
ATL本来被设计成一种书写快捷的小的COM组件。
ATL特性:(1)C++能完成的所有功能。
(2)没有外部程序库,除非你想要使用它。
(3) 一种抽象对象和接口的相对高级的方式。
(4)类集合的自动处理,目标创建,参考计算和查询界面。 标准接口的实现。
(5) 用C++写一个独立的ActiveX控件,你必须亲自书写实现每个接口的每种方法。
二、1、创建ATL Project
步骤1:建立一个解决方案。 步骤2:在 该解决方案中,新建一个 vc++ 的 ATL 项目。见下图
选择Dynamic-link library(DLL)
2、向工程中添加ATL对象
选择ATL Simple Object
名字为FunTest
Interface选择Custom
3、在接口中添加方法.(在类视图中)
方法名为Sum,参数如下图,有三个参数
接口方法的实现, 这个太简单了
STDMETHODIMP CFunTest::Sum(LONG num1, LONG num2, LONG* pVal) { // TODO: Add your implementation code here *pVal = num1 + num2; return S_OK; }
三、新建Win 32 Application进行测试
#include "E:\..\ATLProjectTest\ATLProjectTest_i.h" #include "E:\..\ATLProjectTest\ATLProjectTest_i.c" int main(void) { //声明HRESULT和iFun接口指针 IFunTest * iFun = NULL; //初始化COM HRESULT hr = CoInitialize(NULL); //使用SUCCEEDED宏并检查我们是否能得到一个接口指针 if (SUCCEEDED(hr)) { hr = CoCreateInstance(CLSID_FunTest,NULL,CLSCTX_INPROC_SERVER,IID_IFunTest,(void**)&iFun); } //如果成功,则调用Sum方法,否则显示相应的出错信息 if (SUCCEEDED(hr)) { long ReturnValue; iFun->Sum(30,32,&ReturnValue); cout << "The return value for 30 + 32 is :" << ReturnValue << endl; iFun->Release(); } else { cout << "CoCreateInstance Failed." << endl; } //释放COM CoUninitialize(); return 0; }
显示:
四、在C# 项目中进行测试步骤
1、添加引用(选择Com),找到对应的DLL
2、引用命名空间,(引用对应的命名空间)
3、new实例,调用函数
可参考:.Net 互操作性/article/4782965.html
相关文章推荐
- C++ VS 2008中ATL的创建,使用。并在C++项目以及C#项目中进行调用测试
- C++ VS 2008中ATL的创建,使用。并在C++项目以及C#项目中进行调用测试
- C++ VS 2008中ATL的创建,使用。并在C++项目中进行调用测试
- 在C++创建DLL,以及使用C++或者C#分别调用DLL中的方法
- 如何使用C++创建COM组件(ATL项目)
- 使用vc2008创建dll(c#调用)
- XCode里创建的Cocos2d-x项目如何C++与ObjC混编,以及调用APPLE API和ObjC函数
- VS2010创建ATL工程及使用C++测试COM组件
- VS2010创建ATL工程及使用C++测试COM组件
- 使用vs2005创建智能设备的C#和C++混合项目
- 使用vs2005创建智能设备的C#和C++混合项目
- 创建和使用动态链接库 (C++)C#调用
- 使用VC2008创建基于ATL的ActiveX控件,不自动调用OnCreate函数
- 创建ATL工程及使用C++测试COM组件
- VS 2008创建项目(C#)
- 使用selenium进行web测试项目框架
- C#进行平台调用时利用C++头文件的小技巧
- Java开发环境的搭建以及使用eclipse创建项目
- Cocos2d-x项目移植到WP8系列之六:C#工程使用C++的DLL
- c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目