我在 LabVIEW 中加载 DLL 时遇到了问题。
我正在使用 LabVIEW 连接到流量计,为此,制造流量计的公司非常好地为我提供了一个子 VI 库。这些子 VI 中的每一个都调用该公司提供的两个 DLL 库之一中的函数。
因此,这些子 VI 中有一半依赖于一个 DLL,另一半则依赖于另一个 DLL。
那些使用第一个 DLL 的程序运行得很好,没有任何问题。
但是那些使用第二个 DLL 的程序有一些错误:每次我打开其中一个子 VI 时,都会出现一个弹出窗口,其中显示:
加载“绝对路径\name.dll”时出错。 DLL 库初始化例程失败。
那么子VI就无法执行,并且运行按钮显示为已破解。但有一个转折。如果我右键单击“配置库函数节点”并选择配置,然后重新选择完全相同在适当的字段中添加 .dll 绝对路径,然后单击“确定”,子 VI 运行良好并且完全按照预期执行操作。我实际上并没有在节点配置窗口中更改任何内容,我只是重新选择相同的路径。更奇怪的是,这个奇怪的“技巧”只有大约 75% 的时间有效。另外 25% 的时间,我需要实际关闭该 VI 以及引用它的任何其他 VI,然后重新打开它。
还有另一个对我来说更没有意义的变化:该公司还给我发送了几个“示例 VI”,它们展示了如何相互关联地使用不同的子 VI。这些例子运行得非常好!但后来我编写了自己的 VI,它是“示例 VI”的简单版本,并且不断出现 DLL 加载错误。
我做错了什么,如何确保VI可执行,而不必每次都重新配置库函数节点?您认为是什么造成了这个问题?
注意:部分问题是我并不真正理解在labview中读取DLL是如何工作的,所以任何有关这方面的信息也将不胜感激。
当您在labview中调用函数(在dll内)时,.dll必须位于此处的某个位置,可以通过链接到该位置轻松访问它(或者我相信与VI/可执行文件位于同一位置)。
例如,如果我编写一个子VI,调用stdout来写入命令提示符,它将调用Windows dll。这个dll应该在每台Windows计算机中的相同位置,因为许多Windows程序需要它来日常使用,所以它总是会被定位。
c:\windows\system32\stdout.dll //note this is and example
现在,当您使用新的流量计 VI 时,它期望动态链接库位于原始作者(或至少是最后的编辑者)计算机上的任何位置。如果它们不存在,LabView 就会崩溃。
您可以通过困难的方式重新链接并重新制作 VI。抱歉,但这可能是重制它们的最简单方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)