C++、C# 互调用 之vc6 调用 C# com

1、vc6 调用 C# 编写的com

a、c#编写com

(1)VS2005中使用C#编写COM组件

建立C#编写的COM组件,项目类型为类库

配置:右键点击解决方案资源管理器中的AddCom,选择“属性”,选择“生成”,选择“为COM Interop注册(_P)”

打开AssemblyInfo.cs文件,设置[assembly: ComVisible(true)]

这用就可以生成AddCom.tlb文件
程序代码:

using System;

using System.Collections.Generic;

using System.Text;

using System.Runtime.InteropServices;



namespace AddCom

{

    //可以通过//菜单的 “工具/guid生成”。

    //注意要选择Define Guid{….}格式,并全//部保存下来,保存到哪都行,记事本呀什么的。

    //因为在做VC程序/////////的时候要用到的。

    [Guid("298D881C-E2A3-4638-B872-73EADE25511C")]  

    public interface AddComInterface

    {

        [DispId(1)]

        int iadd(int a, int b);

        [DispId(2)]

        float ladd(float a, float b);

    }



    [Guid("2C5B7580-4038-4d90-BABD-8B83FCE5A467")]

    [ClassInterface(ClassInterfaceType.None)]

    public class AddComService : AddComInterface

    {

        public AddComService()

        {

        }

        public int iadd(int a, int b)

        {

            int c = 0;

            c = a + b;

            return c;

        }

        public float ladd(float a, float b)

        {

            float c = 0;

            c = a + b;

            return c;

        }

    }

}
b、VC6.0编写调用程序

使用VC6.0编写建立MFC应用程序UseCom,项目类型为MFC AppWizard(exe)

在stdafx.h添加:
#import "AddCom.tlb"

using namespace AddCom;


程序代码:

void CUseComDlg::OnButtonUse() 

{

        // TODO: Add your control notification handler code here

        int dresult;

        float fresult;

        CString strResult;



        CoInitialize(NULL);//NULL换成0也可以



        AddCom::AddComInterfacePtr p_Add(__uuidof(AddComService));

        dresult = p_Add->iadd(1,2);

        fresult = p_Add->fadd(1.2,2.3);

        strResult.Format("int:%d \nfloat:%f",dresult,fresult);

        MessageBox(strResult,"计算结果",MB_OK);



        CoUninitialize();   

        

}
 

 

你可能感兴趣的:(C++)