IDL 与 外部语言的几种集成方式(一)——connector

      IDL与外部语言的集成内容包括IDL内调用外部语言和外部语言调用IDL。以下几篇博客简要介绍常用的几种调用方式,希望与大家共同学习和进步。

      一、外部语言调用IDL:

            Connector(连接器):即使用IDL事先做好的ActiveX控件和com控件集成到调用语言中。(本实验环境为VS2005 C#,IDL6.4,ENVI4.4)

           1. IDLDrawWidget

            draw方式(窗口模式): VS工具箱添加com项IDLDrawWidget control 3.0,在form窗口添加该控件,初始化:

Code

           如果pro没有编译成sav,可将pro置放于运行目录下,直接运行axIDLDrawWidget1.ExecuteStr("satstretch");

           nodraw方式:VS资源管理器添加引用com:IDLDRAW3Lib。初始化:

Code

           2. COM_IDL_Connect(nodraw方式)

            VS资源管理器添加引用com:COM_IDL_ConnectLib,初始化:

Code

           此调用过程VS会报错,但IDL程序会正常运行,一直不知道什么地方出了问题,我catch了错误没有理会它。有知道的看过后烦请指教一下。

           说明:

           1. IDLDrawWidget在IDL6.4以后的版本已经被ITT放弃,不再更新,公司以后会朝着COM方向发展。使用Export Bridge Assistant可以将IDL 程序包装成com组件在其他支持com的语言中使用。这个是下篇博客介绍的内容。

          2.参数传递问题,参数传入很好解决。参数传出也提供了相应的接口。IDLDrawWidget提供getNameData方法,具体使用如下:

Code

          COM_IDL_Connect提供的接口是GetIDLVariable,调用方法和getNameData一样。

         3. 如果VS运行于64bit的机器,生成目标平台最好改为x86,否则会出错。(VS for 64x我没有测试过)

原文地址:https://www.cnblogs.com/HomeGIS/p/1335439.html