LabVIEW8.6报表工具包生成和调用DLL问题

点赞:11312 浏览:46015 近期更新时间:2024-03-24 作者:网友分享原创网站原创

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

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

中图分类号: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.dll\word\ NI_Word.lvclass”.

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

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

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

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

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

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

LabVIEW8.6\Vi.lib\utility\NIReport.llb\Word”,重新生成DLL,运行“main.vi”或“main.exe”失败.

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

LabVIEW8.6报表工具包生成和调用DLL问题参考属性评定
有关论文范文主题研究: 关于路径的文章 大学生适用: 研究生毕业论文、学士学位论文
相关参考文献下载数量: 34 写作解决问题: 写作参考
毕业论文开题报告: 论文任务书、论文设计 职称论文适用: 刊物发表、职称评初级
所属大学生专业类别: 写作参考 论文题目推荐度: 免费选题

可见在生成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.6\Vi.lib\utility\NIReport.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,在目标路径中修改为“..\dll\data\ 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问题可以采取类似于上述的三种解决方案.