IDL怎么把.cpp文件编译为.dll文件是标准C++程序,不是C程序。

IDL怎么把.cpp文件编译为.dll文件是标准C++程序,不是C程序。,第1张

为了实现与其他语言的集成开发,IDL拥有以下几个技术:

1) 调用外部程序

IDL调用其他语言功能的最简单的方法就是调用外部程序,即使用SPAWN方式。SPAWN产生一个子进程来执行一个命令或一系列的命令,调用时可以根据需要添加一系列关键字。

2)调用COM组件

IDL可以调用微软的组件对象模型(COM)和ActiveX控件,通过这种方式可对IDL进行功能扩展。具体实现是通过IDLcomIDispatch类实现com组件的调用,通过IDLcomActiveX类实现ActiveX控件的调用。

3) 调用Java类对象

通过IDL-Java bridge方法可以直接访问Java对象。

4)CALL_EXTERNAL方法

CALL_EXTERNAL方法是调用其他语言创建的动态库,需要先创建动态库,在IDL中创建与VC函数中定义的数据结构相匹配的数据结构;利用过程MAKE_DLL编译VC的函数和程序,生成在IDL中可以使用的动态连接库DLL;最后利用函数CALL_EXTERNAL通过动态连接库调用VC的函数。

5) DLM方式

DLM是IDL的功能扩展,DLM是通过C、C++等编译器建立的一个动态库(DLL)和一个DLM的ASCII文件。IDL启动时可自动加载并记录该ASCII文件中进行函数或类的调用定义方式,这种方式的调用跟调用IDL自身的功能函数一样。该方式比普通的DLL动态库调用更灵活方便,可以与IDL进行无缝集成。

6) Callable技术

ENVI/IDL函数可以作为动态链接库被外部程序调用启动,称之为Callable IDL技术。使用Callable IDL技术,外部程序可以像在IDL环境中一样执行IDL的代码。

7)IDLDrawWidget和COM_IDL_Bridge技术

这两个方式都是基于COM组件的,使用跟Callable技术类似,其中IDLDrawWidget可以在其他语言框架下创建IDL的显示Draw组件,使得该技术非常适合用于在框架下进行ENVI/IDL 的可视化展示;而COM_IDL_Bridge则是非常完善的提供了ENVI/IDL 现有功能调用的支持。

另外,网上也有好多的方法

>

openr,lun,FILENAME,/get_lun

创建一个数组来存,要看你的数据是什么类型的了

比如长整型 data = lonarr(5000,3000)

再读取 readu,lun,data

在释放 free_lun,lun

然后再对dat进行处理

可以先获取-9999的位置

index = where(data eq -9999,count)

if count gt 0 then begin

转换坐标

for i = 0, count -1 do begin

yloc = index[i] / 5000

xloc = index[i] - yloc 5000

这里还要你自己判断下这个点周围是不是有4个点 如果这个点正好出在编缘,直接下面这样会报错

data[xloc,yloc] = (data[xloc- 1,yloc] + data[xloc + 1,yloc] + data[xloc,yloc - 1] + data[xloc,yloc + 1]) / 4

endfor

endif

替换完了就可以了

1我要讨论的是matlab、IDL、fortran、C这4件事。因为他们能够共同地干一件事:计算。

2实际上把他们四个放在一起说很诡异的,因为这完全不是一码事,就有点像拿word和pdf作比较一样不明真相。但是大家都这么说,那我也勉强比比看。

3前两者可以归为一个子类,matlab和idl都是一种交互式、可视化语言系统;后两者算一类,是一种算法语言,有人说算高级语言,fortran我同意,C在广义上说可以直接对内存和堆栈进行 *** 作,可能不如fortran级别高,但是针对科学计算的话,也可以勉强算高级语言。(补充提示:编程语言中说的高级语言、中级语言、低级语言、机器语言的四个级别是针对人的理解里,越接近人的语言习惯的就是高级语言,越难以阅读但是机器方便也读的就是低级语言。不是说高级语言比低级语言更好。)

4先说画图:

matlab和IDL本身可以画图,这一点是fortran和C不具备的。虽然fortran和C也有图形库可以调用,但基本上很难用,这么说吧,就好比猫狗也有哺乳的功能,但是指望喝它们那点奶实在是。。。

所以fortran和C仅仅可以编程序做运算,生成文件之后,再交给第三方软件去画图。执行画图任务的可以是origin、gnuplot、pgplot,甚至是matlab和IDL。

就matlab和IDL本身来说,图像也有些区别。它们都有自己的一套图形编码系统,都可以生成eps文件方便插入到latex论文中去,但是它们的eps文件编码方式很不一样。以我的经验,同等分辨率的情况下,IDL的图要小一些、轻巧很多。matlab的图有点笨重。(不过说到轻巧,gnuplot笑了。gnuplot画的eps图竟然可以用记事本直接打开,在里面修改文字,保存,关闭,再看,图上的标度就变了。)matlab的图有一个很严重的缺点,就是边距设置有毛病,或者说与pdf本身的标准不一致。这就导致在linux下生成的latex文档图像有位移。不过也很容易纠正,增加位置参数就行了。其实这倒是一个培养使用完善参数习惯的好办法。IDL没有这个问题,出来的图很好,直接用就行,参数先天地与latex和pdf标准是一致的。

在色彩方面,这里不多说了,详见我过去的博文 >

以上就是关于IDL怎么把.cpp文件编译为.dll文件是标准C++程序,不是C程序。全部的内容,包括:IDL怎么把.cpp文件编译为.dll文件是标准C++程序,不是C程序。、c#怎样调用envi/idl 开发的pro、IDL编程,读取一个二进制.dat文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9368974.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存