作者:朱金灿

来源:http://blog.csdn.net/clever101

简单介绍C#程序如何调用ATL编写的COM组件。

首先新建一个ATL工程,具体如下:

1. 填写工程名称和路径,如下图:

2. 选择工程的服务器类型为动态链接库,如下图:

3. 添加一个ATL简单对象,如下图:

4. 填写类名称,如下图:

5. 选择类的线程模型及其它属性,如下图:

6. 为接口类添加一个方法,如下图:

7. 填写方法名及输入输出参数,如下图:

8. 设置IDL接口属性,这里采用默认设置即可,如下图:

为刚才新建的Add方法添加代码,具体如下:

STDMETHODIMP CMathCalc::Add(LONG Num1, LONG Num2, LONG* Ret)
{// TODO: 在此添加实现代码assert(NULL!=Ret);*Ret = Num1+Num2;return S_OK;
}

然后编译工程,生成一个dll形式的COM。

第二步新建一个C#控制台测试工程,具体如下:

1. 填写控制台工程名称及路径,如下图:

2. 添加一个新的库引用,如下图:

3. 选择刚才新生成的COM——MathCom 1.0类型库,如下图:

4. 在Program.cs中添加如下代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MathComLib; // 注意使用命名空间namespace TestMathCom
{class Program{static void Main(string[] args){int a = 2;int b = 3;int lRetVal = 0;MathCalc MyMathCalc = new MathCalc();MyMathCalc.Add(a, b,out lRetVal); // 注意这里有一个out关键字System.Console.Write(lRetVal.ToString());System.Console.WriteLine("\nPress Enter to continue.");System.Console.ReadLine();}}
}

效果图如下:

问题:

1.C#调用COM接口,在参数类型中必须是C#的int类型而不是long类型对应COM的long类型,为什么呢?

转载于:https://www.cnblogs.com/dyllove98/archive/2013/06/10/3131084.html

C#调用ATL COM相关推荐

  1. JavaScript调用ATL COM(二)

    作者:朱金灿 来源:http://blog.csdn.net/clever101 在上篇文章中介绍了如何在JS中调用ATL COM: JS调用ATL COM中的C++接口的做法 现在我们可以把它嵌入到 ...

  2. win32com调用ATL编写的COM组件

    IDL文件 import "oaidl.idl"; import "ocidl.idl";[object,uuid(B325C169-61FA-4513-9DB ...

  3. ATL Server 与 ASP.NET

    下载本文的代码:[url=http://download.microsoft.com/download/4/b/4/4b44505a-ecda-4dd3-8a0e-71d8c7a8b9bb/ASPCo ...

  4. c语言窗口插件,C语言使用ActiveX控件

    ActiveX使用的头文件,是只有C++才能用的,C语言要使用ActiveX控件,也是件很容易的事. 微软标准的ActiveX控件,根本上它还是一个窗口(Window),通俗地说就是关联了一个或多个C ...

  5. 如何学习Windows编程

    有很多初入门的小朋友跟我说,他们想学"底层"的技术,因为觉得技术含量高,所以想学Windows C++开发,看着调用一个个的参数超级多,调用起来超级麻烦的Windows API,觉 ...

  6. eMule 的使用场景及初始化任务描述级eMule相关代码分析(仅涉及ed2k)

    提前说明:从这页博客开始就会涉及eMule源代码的分析(或者说梳理更为合适),梳理源代码的目的在于让大家在看了一下原理后,想看下这些原理的具体实现(看eMule源代码)时轻松些,更有目标.所以在这里笔 ...

  7. 【程序人生】如何学习Windows编程?

    觉得这篇文章写得很好,对于初学者有启发.因此,转载一下,给更多人看到. 转载至:https://zhuanlan.zhihu.com/p/24773204 有很多初入门的小朋友跟我说,他们想学&quo ...

  8. 转贴: wolfenstein工作室-eMule源代码学习心得

    1, eMule源代码学习心得(1):eMule代码的总体风格和其它相关工程 eMule的官方首页上写着:2002年05月13日 一个叫做 Merkur 的人,他不满意原始eDonkey2000客户端 ...

  9. eMule源代码解析 -1

    eMule源代码解析 -1 2006-10-16 17:37 eMule的官方首页上写着:2002年05月13日 一个叫做 Merkur 的人,他不满意原始eDonkey2000客户端并且坚信他能够做 ...

最新文章

  1. 微软一顿操作猛如虎,PowerShell排名直线上升
  2. python零基础实例-零基础学习Python开发练习100题实例(1)
  3. IDA Pro 数据库文件、函数窗口、结构体窗口
  4. Linux awk命令使用方法
  5. org manual翻译--3.1 内置的表格编辑器
  6. python网站框架下载_最受欢迎的7款Python开源框架总结,忍不住收藏了~
  7. 八 .数据库(多表查询)
  8. 再谈正态分布或高斯函数
  9. mySQL危险命令_MYSQL教程Linux系统中最危险的10条命令
  10. 利用RSM和RSFC配置VLAN间路由
  11. python利器-[python] bluepy 一款python封装的BLE利器
  12. CSS可见格式化模型
  13. ThinkPad Tablet2升级Windows10(各种故障及解决方案)
  14. PS常用案例步骤详解,自学 Photoshop 2022 Mac版,多个PS后期修图小案例笔记
  15. css特效:流光背景+动态边框+滑动效果+聚集效果+小耳朵+阴影流光效果
  16. JAVA小功能手机短信发送
  17. BNF之讲解 ABNF之规范 (RFC 5234)
  18. 【前端微服务化】使用飞冰搭建前端微服务化框架
  19. IT 界惊现文豪!华为领导及阿里 P10 遭吐槽!
  20. Keras基础自学二十(图像旋转,图像剪切,图像移动)

热门文章

  1. 大数据开发实战:数据流图及相关数据技术
  2. Linux下进行Web服务器压力(并发)测试工具http_load、webbench、ab、Siege、autobench简单使用教程(转)...
  3. tomcat启动报:No Spring WebApplicationInitializer types detected on classpath
  4. Advanced Installer 9.8打包实录
  5. 你可能不知道的跨域解决方案
  6. HDU 2063 过山车【二分图最大匹配】
  7. C#实现文件下载代码
  8. HTML5学习笔记简明版(4):新元素之video,audio,meter,datalist,keygen,output
  9. ASP.NET控件开发基础5
  10. 缠绕多年的PCIE通道数问题终于完全明白了,欢迎指正