永发信息网

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

答案:2  悬赏:80  手机版
解决时间 2021-01-30 10:29
  • 提问者网友:心如荒岛囚我终老
  • 2021-01-29 14:06
【转】IDL 与 外部语言的几种集成方式(一)——connector
最佳答案
  • 五星知识达人网友:青尢
  • 2021-01-29 15:00
以下几篇博客简要介绍常用的几种调用方式,希望与大家共同学习和进步。
一、外部语言调用IDL:
Connector(连接器):即使用IDL事先做好的ActiveX控件和com控件集成到调用语言中。(本实验环境为VS2005
C#,IDL6.4,ENVI4.4)1.
IDLDrawWidget
draw方式(窗口模式): VS工具箱添加com项IDLDrawWidget control
3.0,在form窗口添加该控件,初始化:1intn;2this
.axIDLDrawWidget1.IdlPath=@"E:\ProgramFiles\ITT\IDL64\bin\bin.x86\idl.dll";3n=
axIDLDrawWidget1.InitIDL((int)this
.Handle);4if(n==0)5{6
MessageBox.Show("IDL控件初始化失败");7}8axIDLDrawWidget1.SetOutputWnd((int)richTextBox1.Handle);9axIDLDrawWidget1.ExecuteStr("restore,'satstretch.sav'");//satstretch.sav必须置放于运行目录下10axIDLDrawWidget1.ExecuteStr("satstretch");11
如果pro没有编译成sav,可将pro置放于运行目录下,直接运行axIDLDrawWidget1.ExecuteStr("satstretch");
nodraw方式:VS资源管理器添加引用com:IDLDRAW3Lib。初始化:1intn;2IDLDrawWidgetidl=new
IDLDrawWidgetClass();3idl.IdlPath=@"E:\ProgramFiles\ITT\IDL64\bin\bin.x86\idl.dll";4n=
idl.InitIDL((int)this
.Handle);5if(n==0)6{7
MessageBox.Show("IDL控件初始化失败");8}9idl.SetOutputWnd(0);//注意:如果IDL中要调用envi函数,加上这句会防止出错10idl.ExecuteStr("restore,'satstretch.sav'");11idl.ExecuteStr("satstretch");
2. COM_IDL_Connect(nodraw方式)
VS资源管理器添加引用com:COM_IDL_ConnectLib,初始化:1COM_IDL_connectcom=new
COM_IDL_connectClass();2try3{4
com.CreateObject(0,
null,
null);5
com.ExecuteString("restore,'satstretch'");6
com.ExecuteString("satstretch");7}8catch(Exceptionex)9{10//MessageBox.Show(ex+com.GetLastError());11}
1. IDLDrawWidget在IDL6.4以后的版本已经被ITT放弃,不再更新,公司以后会朝着COM方向发展。使用Export
Bridge Assistant可以将IDL 程序包装成com组件在其他支持com的语言中使用。这个是下篇博客介绍的内容。
2.参数传递问题,参数传入很好解决。参数传出也提供了相应的接口。
全部回答
  • 1楼网友:廢物販賣機
  • 2021-01-29 16:21
我是来看评论的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯