LabVIEW 8.6报表工具包生成和调用DLL问题分析及对策

2012-04-29 00:44胡胜文万加林
科技资讯 2012年19期
关键词:工具包自带文件夹

胡胜文 万加林

摘 要:针对LabVIEW8.6调用报表工具包生成的DLL过程中出现“NI_Word.lvclass”路径无法找到的问题,做了详细描述和分析,并提供了相应的解决方案。

关键词:LabVIEW 8.6Word动态链接库报表工具包面向对象

中图分类号:TP3 文献标识码:A 文章编号:1672-3791(2012)07(a)-0007-02

LabVIEW是美国国家仪器(NI)公司推出的专门用于虚拟仪器开发的图形化软件编程平台,吸引了大批开发者追随,NI也根据市场需求每年推出一个新版本。但新技术的引用不可避免的也带来了新的问题和BUG,尤其是升级后,很多硬件驱动不得不更新。LabVIEW 8.6版本是NI推出的所有版本中,大部分用户公认比较成熟稳定的版本。

NI 报表工具包从1.1.3开始采用面向对象技术,重新设计,1.1.3和1.1.4版本是专为LabVIEW 8.6而定制使用的,而以前的版本如1.1.1、1.1.2(面向过程技术)在LabVIEW 8.6下与自带的Report函数不兼容。

1问题描述

应用开发环境以及报表工具包版本:LabVIEW 8.6 + Report Generation Toolkit 1.1.3。

在LabVIEW 8.6新建工程项目文件,并按照图1和图2建立相应的VI和文件。

当运行main.vi或Main.exe时,出现下面(图3)报错框。

而单独运行1.vi或1.exe时,却能正常运行。

2问题分析

根据问题报错框描述,问题可能出现在“Get LV Class Default Value.vi”的上一层文件“Word class path.vi”传递出的NI_Word.lvclass路径,图4为报表工具包自带的“Word class path.vi”程序框。

利用LabVIEW自带诊断和调试工具,可获得“Word class path”显示的文件路径,如表1所示。

(1)当运行main.vi时,由于是“Develo- pment system”环境下,根据路径的分离规则,“NI_Word.lvclass”文件路径应在当前DLL文件的下层目录,并且布尔量选择为False,即“..1.dllword NI_Word.lvclass”。

(2)当运行main.exe时,由于是在“Run Time system”环境下,布尔量的选择为True,系统默认“NI_Word.lvclass”是在“.. 1.dllNI_Word.lvclass”。

(3)当运行1.vi时,由于是在“Develop- ment system”环境下,系统默认“NI_Word.lvclass”是在安装路径下,而且在该路径下可以找到此文件。

(4)当运行1.exe时,由于是在“Run Time system”环境下,系统默认“NI_Word.lvclass”是在当前EXE文件的下层目录,即“.. 1.exeNI_Word.lvclass”。

现根据以前NI在对exe生成过程的描述,是将所有vi都转移到exe目录[1],例如a.vi路径为“c:a.vi”,当生成exe时,路径变为“c:a.exea.vi”,这点也可以从运行1.exe,“NI_Word.lvclass”的路径可以看出。

由于DLL生成过程类似于exe,以及上述运行结果分析,“NI_Word.lvclass”应该是在1.dll目录下,而在实际应用中,在“..1.dll”或“..1.dllword”却找不到该路径。

如果在DLL的生成过程中,添加“NI_Word.lvclass”到“始终包括”中,需要注意的是,需在项目浏览器(工程项目)中手动添加“NI_Word.lvclass”文件“…Nationalinstruments

LabVIEW8.6Vi.libutilityNIReport.llbWord”,重新生成DLL,运行“main.vi”或“main.exe”失败。

如果修改“Word class path.vi”,指定一个固定路径给“NI_Word.lvclass”,如图5所示,却能够正常运行。

可见在生成DLL的过程中,并没有将“NI_Word.lvclass”包含到DLL的目录下。

3解决方案

3.1 版本降级使用

当使用LabVIEW 8.5和Report Generation Toolkit 1.1.2以下版本时,不存在此类问题(升级为LabVIEW 2010+Report Generation Toolkit 2010也存在此类问题)。

3.2 指定“NI_Word.lvclass”为一固定路径

(1)从安装路径复制“NI_Word.lvclass”到DLL生成路径。

(2)修改“New Report.vi”中的“Word class path.vi”(图7)。

3.3 改造函数库和使用方法

(1)修改“New Report.vi”中的“Word class path.vi”,使得生成DLL时文件路径不同,但同时不影响编辑状态(Development system)和生成EXE状态(Run Time system)下的文件路径,如图7所示。

(2)在项目浏览器(工程项目)中添加“NIReport.llb”(“…LabVIEW8.6Vi.libutilityNIReport.llb”)。

(3)在“源文件”目标中,在“始终包括”添加NI_Word.lvclass、NI_Html.lvclass、NI_Report.lvclass、NI_Standard Report.lvclass,需要注意的是,如果1.vi作为某一个VI的子VI时,并且该VI生成DLL时,还需添加“Word class path.vi”。

(4)在“目标”中,添加对应的文件夹,命名要相同,如“NI_Word”,“右侧类别”勾选llb,在目标路径中修改为“..dlldata NI_Word.dll”;其它类似。

(5)在“源文件设置”中,把四个lvclass文件设置为对应的文件夹目标,如图8所示。

需要进一步说明的是,如果生成的文件中有“NI_ReportGenerationToolkit”类似的文件夹,则在“附加排除项”中,勾选“断开连接自定义类型”。

4结语

(1)当用到有关Excel的VI时,也会存在此类问题,只需按照对Word的处理方法即可(“Excel class path.vi”和“NI_excel.lvclass”)。

(2)在生成exe时,如果想解决生成的exe目录内一大堆的VI和文件夹时,可以采用类似的第三种方法。

(3)LabVIEW 2010+ Report Generation Toolkit 2010解决了生成的exe目录内一大堆的VI和文件夹问题(但对DLL找不到路径这个问题还未解决)。对DLL问题可以采取类似于上述的三种解决方案。

参考文献

[1] 阮奇帧.我和LabVIEW:一个NI工程师的十年编程经验[M].北京:北京航空航天大学出版社,2009.

猜你喜欢
工具包自带文件夹
Epigallocatechin-3-gallate exerts antihypertensive effects and improves endothelial function in spontaneously hypertensive rats
磁力文件夹
周迅:天才,自带拨乱反正的能量
谷歌云与Digital Asset合作推出区块链工具包
“好卖的产品 自带营销力。”
调动右键 解决文件夹管理三大难题
好的爱情自带成长属性
运用MATLAB软件求解高中数学中的线性和非线性规划问题
挂在墙上的文件夹
TC一键直达常用文件夹