zoukankan      html  css  js  c++  java
  • C++调用IDL导出的COM文件

    DYQ老师在esri培训教材上有C#调用IDL导出dll组件的方法

    在这里使用演示C++调用IDLEXBR_ASSISTANT导出的COM组件的方法

    同样以helloworldex__define.pro为例看导出为dll并进行数据传递

    ;helloworldex__define.pro
    
    FUNCTION helloworldex::HelloFrom, who
          IF (N_ELEMENTS(who) NE 0) THEN BEGIN
          
          MESSAGE = "Hello World from " + who
          tmp = dialog_message(MESSAGE,/infor)
          RETURN, message
       ENDIF ELSE BEGIN
          MESSAGE = 'Hello World'
          tmp = dialog_message(MESSAGE,/infor)
          RETURN, message
       ENDELSE
    END
    
    ; -----------------------------------------------------------
    ; Init returns object reference on successful
    ; initialization.
    FUNCTION helloworldex::INIT
    
       RETURN, 1
    
    END
    
    ; -----------------------------------------------------------
    ; Object definition.
    PRO helloworldex__define
      struct = {helloworldex, $
         who: '' , $
         message: ' ' $
      }
    END

    (1) IDL命令行输入IDLEXBR_ASSISTANT新建 COM工程

    image

    (2) 设置 HelloFrom的输出参数

    image

    生成com文件(dll文件和tlb文件)

    (3) 发布后注册组件

    regsvr32 “helloworldex.dll”

    image
    (4) 调用组件

    #include "stdafx.h"
    #include  <atlbase.h>
    #import "helloworldex.dll" no_namespace
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	CoInitialize(NULL);
    	{	
    		CComPtr<Ihelloworldex> spFoo;
    		spFoo.CoCreateInstance(__uuidof(helloworldex));
    		CComVariant vtNULL(0);  
    		HRESULT hr = spFoo->CreateObject(0,vtNULL,vtNULL);	
    		_bstr_t returnstr;
    		returnstr=spFoo->HELLOFROM(L"ESRIChina-BJ");//,returnstr);
    		wprintf(L"%s", (WCHAR *)returnstr);
    	}
    	CoUninitialize();
    	return 0;
    }

    输出Hello World from ESRIChina-BJ

  • 相关阅读:
    php基础学习(1)
    php基础学习-Apache和MySQL环境配置
    web前端面试题记录
    js面向对象-class类的基本使用es6语法规范(31-64)
    js面向对象-class类的基本使用es6语法规范(1-30)
    javascript this指向
    git操作
    axios的二次封装和api接口规范
    linux下mysql开启二进制日志
    MySQL数据库设计常犯的错以及对性能的影响
  • 原文地址:https://www.cnblogs.com/lartely/p/2343767.html
Copyright © 2011-2022 走看看