zoukankan      html  css  js  c++  java
  • C++、c#互调用之VC6 调用 VC6 COM

    1、vc6 编写com

    使用VC6.0建立COM组件,工程类型:ATL COM AppWizard

    程序代码:

    接口:

    interface IAdd : IDispatch
            {
                    [id(1), helpstring("method iadd")] HRESULT iadd([in]int a, [in]int b, [out]int * c);
                    [id(2), helpstring("method fadd")] HRESULT fadd([in]float a, [in]float b, [out]float * c);
                    [id(3), helpstring("method isub")] HRESULT isub([in]int a, [in]int b, [out]int * c);
            };


    实现:

    STDMETHODIMP CAdd::iadd(int a, int b, int *c)
    {
            // TODO: Add your implementation code here
            *c = a + b;
    
            return S_OK;
    }
    
    STDMETHODIMP CAdd::fadd(float a, float b, float *c)
    {
            // TODO: Add your implementation code here
            *c = a + b;
    
            return S_OK;
    }
    
    STDMETHODIMP CAdd::isub(int a, int b, int *c)
    {
            // TODO: Add your implementation code here
            *c = a - b;
    
            return S_OK;
    }


    2、VC6.0编写调用程序

    使用VC6.0建立MFC应用程序UseCOM,调用刚刚建立的COM组件

    将上面程序AddCom生成的AddCom.dll放入本程序的工程目录和程序生成目录中

    在StdAfx.h中加入:

    #import "AddCom.dll" no_namespace

    程序代码:

    void CUseComDlg::OnBUTTONUse() 
    {
            // TODO: Add your control notification handler code here
            CString strResult;
            CoInitialize(NULL);//NULL换成0也可以
            IAddPtr m_add = NULL;
            HRESULT hr = S_OK;
            hr = m_add.CreateInstance(__uuidof(Add));
    
            int d_a = 90;
            int d_b = 10;
            int d_c;
            int d_d;
            float f_a = 1;
            float f_b = 2;
            float f_c;
     
            m_add->_IAdd(d_a,d_b,&d_c);
            m_add->fadd(f_a,f_b,&f_c);
            m_add->isub(d_a,d_b,&d_d);
    
            strResult.Format("返回结果:%d; %f; %d",d_c,f_c,d_d);
            MessageBox(strResult,"结果",MB_OK);
    
            m_add.Release();
            m_add = NULL;
            CoUninitialize();

    }

  • 相关阅读:
    base64这种编码的意义
    玩2k16
    http://riddle.arthurluk.net walkthrough
    sshfs
    其它技术名称解释
    解决Apache日志"internal dummy connection"方法
    Aliyun OSS Nginx proxy module(阿里云OSS Nginx 签名代理模块)
    php-imagick扩展
    phpinfo空白
    Docker数据管理-数据卷 data volumes和数据卷容器data volumes containers的使用详解
  • 原文地址:https://www.cnblogs.com/MayGarden/p/1629608.html
Copyright © 2011-2022 走看看