【IDL】64位IDL中调用32位功能的方法
IDL中某些功能只能在32位下使用,但是现在更多的会使用64位IDL,如果频繁的切换IDL会很麻烦。
可以查看下面的网址了解ENVI/IDL产品功能对操作系统的要求:
 
比如我们在64位下IDL写了一个功能,但是需要用到DXF格式的数据。而IDL提供的idlffdxf只能支持32位系统,在64位IDL下运行下面的代码会给出平台不兼容的提示。
IDL> heart=obj_new('idlffdxf',filepath('heart.dxf',subdir=['data']))
% OBJ_NEW: Dynamically loadable module is unavailable on this platform: DXF.
% Execution halted at: $MAIN$ 
我们可以在64位IDL中启动一个32位进程,代码如下:
IDL> b = idl_idlbridge(ops = 32)注:当我们使用32位IDL时,不能通过此函数启动64位IDL进程。
 
下面可以编写代码执行DXF格式数据读取功能。
PRO test_idlffdxf
 ;启动32位进程
 b=idl_idlbridge(ops=32)
 ;使用idlffdxf读取心脏数据
 command="heart=obj_new('idlffdxf',"+ $
   "filepath('heart.dxf',subdir=['examples','data']))"
 b.execute,command
 b.execute,"heartTypes=heart.getcontents()"
 b.execute,"tissue=heart.getentity(heartTypes[1])"
 b.execute,"connectivity=*tissue.connectivity"
 b.execute,"vertices=*tissue.vertices"
 ;从32位IDL进程中获取心脏数据到64位IDL
 vertices=b.getvar('vertices')
 connectivity=b.getvar('connectivity')
 ;对象图形法显示心脏三维模型
 oPoly=idlgrpolygon(vertices,poly=connectivity,$
   style=2,color=!COLOR.RED, /shading)
 xobjview,oPoly,SCALE=0.7,title='Heart'
 xobjview_rotate, [1, 0, 0], -70
END运行效果,一颗红心送给你~~~

注:利用idl_idlbridge同样可以实现多线程并行处理。

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号