• 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();   
            
    }
     
  • 相关阅读:
    IDEA去除代码重负导致的波浪黄线
    java代码里出现中文乱码怎么解决
    准备接入个人支付接口?看完这几款支付产品再做决定!
    个人网站选择支付宝api
    PayPay猪 文档中心
    如何让input的值根据select改变
    Visual Studio运行VC++
    腾讯视频转mp4
    重要网址
    ANSYS笔记本
  • 原文地址:https://www.cnblogs.com/MayGarden/p/1629547.html
Copyright © 2020-2023  润新知