(1)
发布后的程序若需要简化体积,只需bin.x86下包括freetype2_1_3.dll、idl.dll、idl.pref、MesaGL6_2.dll、MesaGLU6_2.dll、osmesa6_2.dll、ug3220.dll及myApp.exe文件,\lib\hook\下包含idlrtmain.sav文件即可运行,如果调用到了相关函数只需拷贝对应的DLM到当前系统目录即可。
图:使用Export按钮进行程序发布
图:ExportFiles对话框
(2)
IDL7.0及以上版本,用MAKE_RT命令代替了Export功能,下面介绍发布步骤。
方法1:使用SAVE命令完成
对于单个或少量源码文件,使用SAVE命令较为方便。以helloworld.pro为例,使用如下命令编译SAV文件,编译后的SAV文件可双击运行。
IDL>.RESET_SESSION
IDL>.COMPILE HELLOWORLD.PRO
%Compiled module: HELLOWORLD.
IDL>SAVE, 'HELLOWORLD', FILENAME = 'D:\TEMP\HELLOWORLD.SAV', /ROUTINES
注:生成的SAV文件名必须与主过程名一致,否则无法运行。
方法2:通过构建工程创建SAV文件
对于含有多个源码的工程,使用SAVE命令较为繁琐,需要对所有源码进行编译后才能运行SAVE命令。所以推荐使用构建工程的方法。
首先保证所要编译的源码以工程形式存在,如果不是,可以新建与主过程名同名的工程,将源码和资源文件拷贝进去即可。然后在工作台的资源管理器中,右键选择目标工程,点击构建工程(IDL 8.2中为构建项目),设置项按默认即可,在IDL控制台会出现构建进程和结果提示,如图所示。
图:右键选择构建工程
图:构建工程设置界面
图:构建进度和结果提示
在创建完SAV文件后,就可以利用SAV文件发布EXE程序了。
–
–
–
–
–
–
–
–
–
–
以IDLViewer为例,收集信息如下:
在IDL控制台输入如下命令:
MAKE_RT, 'IDLVIEWER', 'D:\TEMP', SAVEFILE = 'D:\IDLVIEWER\IDLVIEWER\IDLVIEWER.SAV'
Make_RT常用关键字:
发布成功之后,在D:\Temp\idlviewer路径下含有如下文件:
如果IDL程序中调用了ENVI函数,那么在发布的时候有几个需要注意的地方。下面是常用的几个方法。
注:在源码中使用了如下代码调用ENVI函数,建议在前面加入COMPILE_OPT IDL2,保证在编译的时候不会出错。
ENVI,/RESTORE_BASE_SAVE_FILES
ENVI_BATCH_INIT
该方法仅对IDL7.0之前的版本适用,在IDL7.0及之后版本下暂时不能用。假设你的程序的名称是myApp,通过下面的步骤发布:
(1)
先建一个文本文件,命名为myApp.run,里面写上程序的名字myApp。
(2)
打开idl编辑器把打包程序目录(包含sav文件的目录)修改成idl工作目录或者是添加到IDL搜索路径。
图:添加路径
(3)
建立一个快捷方式。在快捷方式的属性中目标加上一下命令
idlde路径-minimized -noconfirmexit-nosplash @ "run文件路径"
例如:
D:\Program\envi43\IDL63\bin\bin.x86\idlde.exe-minimized -noconfirmexit -nosplash@"C:\protest\myApp.run"
最简单的方法:直接拷贝ENVI+IDL的快捷方式,把最后envi.run的文件路径改成你的run文件路径就行
(4)
这种方式发布出来的程序的运行需要安装ENVI及IDL,并且设置IDL的工作路径,否则出错。
该方法在各个版本下均测试通过,在IDL8.2下的操作步骤为:
(1)
图:工程构建属性修改
(2)
使用MAKE_RT命令即可,方法与纯IDL程序发布方法一致,将资源文件和许可文件拷贝进去之后,修改INI配置文件。将[Dialog]下的DefaultAction后面修改为系统安装IDL的IDLrt.exe的完整路径,例如:C:\ProgramFiles\Exelis\IDL82\bin\bin.x86_64\idlrt.exe-rt=test_envi.sav。
图:INI配置文件
联系客服