【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同样可以实现多线程并行处理。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?