在Teststand中调用LabWindows™/CVI 代码为什么出现了错误代码:-17709



主要软件:
主要软件版本: 4.2.1
主要软件修正版本: N/A
次要软件: LabWindows/CVI Development Systems>>LabWindows/CVI Full Development System, LabWindows/CVI Development Systems

问题:

通过使用 LabWindows/CVI 调节器调用了 LabWindows/CVI 编译器中的函数,我配置了一个步骤,该函数为 .obj or .lib 代码模块,并且当我尝试去执行我的序列时,我收到了以下显示的错误:

无法为‘函数名称’获得标准CVI步骤模块地址。如下的函数或者变量被代码模块引用,但是无法被找到。你可能需要在tscvirun项目包含额外的函数库或仪器驱动文件,或者自动加载函数库保证模块以备加载:__CVI_Internal_Demo_Specifier, __CVI_Internal_Linkage_Specifier, __CVI_Internal_Toolkit_Demo_Name

为什么会出现这个错误?

 

错误代码 -17709, 一个CVI模块包含无效的的外部引用。



解答: 注意:在TestStand 2013中,调用non-DLL 代码模块,其中包括 .obj 和 .lib 文件夹,已经不再被Labwindows/CVI 适配器支持。在TestStand 2013 及以后的版本中,使用这类库文件,需要将其编译至DLL。

当 LabWindows/CVI 适配器下载并执行一个在.obj or .lib 代码模块中的函数时, LabWindows/CVI 的运行时引擎必须动态链接到编译代码,并且解决所有被代码模块引用的外部符号。在 LabWindows/CVI 适配器配置对话框中,你可以在下载和执行代码模块之前,配置一个LabWindows/CVI 适配器支持库的列表。配置对话框在如下路径包含了库文件:<TestStand>\AdapterSupport\CVI\AutoLoadLibs 。如果代码模块引用了一个没有包含于任何加载库里符号,适配器会返回一个错误。

如果AutoLoadLibs目录在LabWindows/CVI 适配器下载.obj or .lib文件时是空的,适配器会自动从LabWindows/CVI 的安装目录下复制一个默认库文件,其中有一个cvistart.lib的函数库。自LabWindows/CVI 2009的版本开始,上面提到的三种符号已经不再包含于cvistart.lib,所以使用早期版本的 LabWindows/CVI编译代码模块后, LabWindows/CVI适配器在加载代码模块时会失败。

你将会遇到上述错误:如果你最近使用新安装LabWindows/CVI 2009 或更新版本的电脑;或者如果你最近升级到LabWindows/CVI 2009 及更新版本,并且将AutoLoadLibs 目录下的文件夹删除了;或者使用LabWindows/CVI 适配器配置对话框更新了文件。

出现该错误时解决步骤如下:

  1. 退出Teststand应用程序
  2. 下载额外cvi_2009_internal_symbols.obj  file 并将该文件放入如下路径:<TestStand>\AdapterSupport\CVI\AutoLoadLibs directory 
  3. 启动TestStand 应用程序并再次进行测试。

如果你使用该步骤操作后仍然有此问题,请联系

National Instruments Support.

相关链接: KnowledgeBase 4G9B1KQX: TestStand Cannot Load Object or Library Files for LabWindows/CVI Adapter

附件:
Error.png
cvi_2009_internal_symbols.obj




报告日期: 01/28/2010
最近更新: 03/03/2014
文档编号: 55RG9K6X