C++和C#编写调用COM组件

前一阵在工作中做项目的时候,遇到了COM组件的调用和使用问题,当时研究和好一阵,才把中间的环节打通,现在写出来为大家提供方便,这里包含了四个类型:

1、在VS2005中,C#编写DLL并使用C++调用

2、在VS2005中C#编写的COM组件,使用VC6.0调用

3、在VC6.0中编写COM组件,使用VS2005 C#调用

4、在VC6.0中编写COM组件,使用VC6.0调用

其中每个类型都写了两个程序,一个为COM组件程序,一个为调用程序

程序实现:

1、在VS2005中,C#编写DLL并使用C++调用

(1)C#编写DLL程序

建立C#编写的DLL程序AddDll,项目类型为:类库

程序代码:

using System;
using System.Collections.Generic;
using System.Text;
namespace AddDll
{
  public class Add
  {
    public int iadd(int a, int b)
    {
      int c = a + b;
      return c;
    }
  }
}

(2)C++编写调用程序

建立C++的Win32控制台应用程序UseDll,项目类型为:Win32控制台应用程序

配置:右键点击解决方案资源管理器中的UseDll,选择“属性”,将公共语言运行库支持设置为“公共语言运行库支持(/clr)”


图一 公共语言运行库设置

时间: 2024-12-10 03:29:22

C++和C#编写调用COM组件的相关文章

vc++-新人求帮助:VC6 调用delphi编写的com组件函数 报错

问题描述 新人求帮助:VC6 调用delphi编写的com组件函数 报错 代码: IElectric *ptr = NULL; CLSID clsid; HRESULT hr = CLSIDFromString((LPOLESTR)L"{18F86FFB-158B-42D6-9203-C4197A4E76FE}",&clsid); hr = CoInitialize(0); if(!SUCCEEDED(hr)) { int nCode = GetLastError(); } h

PHP4调用自己编写的COM组件

搞完了PHP4调用JavaBean,又想去试试调用COM,开始以为很难,自己用VB6写了一个Active Dll在PHP4中调用,马上成功,比调用javabean方便多了,下面讲一下我的步骤. 一:用VB6写Activex Dll 代码如下: Option Explicit Private MyScriptingContext As ScriptingContext Private MyApplication As Application Private MyRequest As Request

PHP调用VC编写的COM组件实例_php实例

  一.用VC创建COM组件 1.vc新建项目 -> ATL项目,输入名称ComTest,ComTest将作为COM组件的名称. 2.到了ATL项目向导,不需要改动,完成向导.向导完成后,vc将会自动生成一系列的程序. 3.切换到类视图,在ComTest项右键,添加类,选择ATL简单对象, 4.来到ATL简单对象向导,输入你要新建的类名 MyClass,完成向导.(注意了,还要填写ProgID,有些vs会自动补全) 5.回到类视图中,在IMyClass右键,添加方法,将会进入添加方法的向导. 6

PHP4 调用自己编写的 COM 组件

作者:东方一蛇 搞完了PHP4调用JavaBean,又想去试试调用COM,开始以为很难,自己用VB6写了一个Active Dll在PHP4中调用,马上成功,比调用javabean方便多了,下面讲一下我的步骤.下载的版本是从http://www.mm4.de/.一:用VB6写Activex Dll 代码如下: Option Explicit Private MyScriptingContext As ScriptingContext Private MyApplication As Applica

在ASP中调用DCOM组件的应用技巧

在ASP中调用DCOM组件的应用技巧 1.编写DCOM组件: 假设我们想通过ASP页面来远程启动DNS服务,并且DNS服务器与Web服务器不为同一台机器.我们可以编写一个ActiveX DLL 来实现这个功能. 首先我们建立一个批处理文件StartDNS.bat,文件中写入:Net Start DNS.将文件保存在DNS服务器的一个目录下,例如C:\ManDNS\: 其次我们编写 Dll 程序如下(VB编写): Public Function StartDNS() As Boolean On E

在.NET里使用Visual FoxPro资源-vfp编写的COM组件

第二部分:在.NET里使用vfp编写的COM组件 Fox能够灵活.直观.快速处理数据,使得它非常适合应用在业务逻辑层次.从Visual FoxPro 5开始,微软不断加强Visual FoxPro 的COM组件开发上能力.简单归纳一下Visual FoxPro 在COM组件编写的特点: 全新的运行时刻库:VFPnT.DLL(n代表版本号).在这个运行库中,删除了大量老式的和界面控制元素,更小巧.更稳定.更快速. 全新的SESSION对象.在多线程状态下提供很好的隔离性. 内置对XML的支持,方便

c#调用com组件的奇怪问题,各位大神帮忙

问题描述 c#调用com组件的奇怪问题最近做了一个简单的http服务器,要求在收到客户端发送的数据后根据数据的不同调用com组件的不同方法,现在总是没有响应,代码流程示例如下:1.线程定义thread=newThread(newThreadStart(listen));thread.IsBackground=true;thread.Start();2.方法体其中:c.OpenCard()是调用com组件的代码,该com组件由c++bulider编写.publicvoidlisten(){IPAd

VS.Net C# 调用 Active 组件

active 在编码中不可否认调用Active会给编程带来很大便利,虽然微软不太只持.net调用Active 组件.       本实例是一个简单Web 页面调用Active组件的例子,实现把数据传入并显示在active组件里的控件中. 实例代码如下:1.建立Active组件(这里用.net c#创建)        (本程序中:建立类库添加组件类后托放:label . button  .groupBox各一个) 需要注意的是在生成.dll之前一定要在类库的AssemblyInfo.cs中加入引

多线程-在html中调用ocx组件,其click事件在运行过程中如何改变按钮状态?

问题描述 在html中调用ocx组件,其click事件在运行过程中如何改变按钮状态? 20C 我在做一个简单的网页demo,使用html语言调用ocx组件的方式完成前端功能加载和运行,我使用了一个按钮来调用ocx组件.我现在的问题是:我需要通过UI界面来清楚表示ocx组件的运行进度,比如:点击"执行"按钮,在执行过程中,按钮框变成"正在执行..."或者增加某种进度提示信息,当ocx组件执行完成后,按钮状态能够还原.我使用了很多方式,比如:1.增加进度条:2.通过定时