Labview 2011 中的 DLL 加载错误

2024-05-16

我在 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(使用前将#替换为@)

Labview 2011 中的 DLL 加载错误 的相关文章

  • 是否可以通过 C#.NET 编写 Win32 .dll 文件?

    是否可以通过 C NET 编写 Win32 dll 文件 如果是的话 我在哪里可以找到一些教程 如果不是 那么您对编写 Win32 DLL 有什么建议 Thanks 对的 这是可能的 事实上有一个工具可以做到这一点 它在 Rainmeter
  • 将.exe项目转换为类库

    我在 Visual Studio 2010 Ultimate 中有一个半大型 C exe 项目 我想将其转换为 DLL 类库 有没有一种简单的方法可以做到这一点 而不涉及创建新的类库项目 预先感谢 项目 gt 属性 gt 应用程序选项卡 将
  • LNK2028 托管 C++ DLL 在另一个托管 C++ DLL 中调用函数

    我正在将 VS2010 与托管 C DLL 一起使用 调用另一个托管 C DLL 中的函数 并且我得到了很多LNK2028 http msdn microsoft com en us library ms235590 28v vs 80 2
  • 动态加载具有某些其他 dll 依赖项的 .NET 程序集

    我想为我的应用程序创建一个插件引擎 但我有一个问题 如何加载对其他程序集有一定依赖的 Net 程序集 实际上是我的插件 例如我想加载A DLL and A DLL需要B dll or C dll等等来运行 这A dll有两种方法 例如A a
  • 通过 Excel / VBA 调用 DLL 中的 C++ 函数在传递双参数时生成异常

    我试图通过 DLL 在 Excel VBA 中使用 C C 静态函数 我在 VS17 中调试时遇到异常 我怀疑这是参数传递方式的问题 它是双精度 EXCEL EXE 中 0x00007FFA28BBA14F kernel32 dll 处抛出
  • 如何在dll级别读取app.config? [复制]

    这个问题在这里已经有答案了 我在一个解决方案中有一个控制台应用程序项目和库项目 dll The 图书馆项目有 app config 文件 我在其中存储我在库中使用的一些键值对 控制台应用程序引用此 dll 我有另一个 app config
  • VBA FreeLibrary 不卸载 DLL

    当我使用完一个 DLL 文件后 我需要删除它 代码完成后清理 我尝试在 Excel VBA 中使用 LoadLibrary 和 FreeLibrary 但无论我做什么 Excel exe 都会坚持 DLL 文件 Public Declare
  • 如何使用ilMerge将dll合并到exe文件中? [复制]

    这个问题在这里已经有答案了 可能的重复 将 dll 与 exe 合并 https stackoverflow com questions 14551311 merging dll with exe 好的 所以 我将 ilmerge 的所有文
  • 在 C++ 中不使用 CLSID 和注册表即可获取 COM 对象的 DLL 文件

    是否可以在不使用 CLSID 和注册表查找的情况下获取已加载 COM 对象的 DLL 文件名 我有一个IUnknown或者就我而言IBaseFilter接口指针 现在我想获取创建此 COM 对象的 DLL 文件名 我可以使用对象点地址来反向
  • 使用 Mupen64Plus 非托管 C dll API 命令填充 C# 结构

    我在用着木盆64Plus https github com mupen64plus mupen64plus core以及包含的m64p test rom v64 file 我在用着C 与mupen64plus dllAPI 是写在C Pro
  • C++ 项目编译为静态库,编译为动态库失败(链接器错误)。为什么?

    我有一个 VS2008 本机 C 项目 我希望将其编译为 DLL 它仅引用一个外部库 log4cplus lib 并使用其功能 当然也使用 log4cplus 的 h 文件 当我尝试将我的项目编译为静态库时 它成功了 当我尝试作为 DLL
  • 有没有办法找到dll公开的所有函数

    我一直在寻找一种方法来获取映射到 dll 中函数名称的所有字符串 我的意思是您可以调用 GetProcAddress 的所有字符串 如果你对 dll 进行十六进制转储 符号 字符串 就在那里 但我认为必须有一个系统调用来获取这些名称 如果您
  • 如何将dll作为服务运行?

    我知道如何编写 dll 如何编写服务以及如何运行 dllrundll32 但现在我想编写一个在Windows中作为服务安装的dll 我不知道这是否可能或应该导出 dll 中的哪个函数 如何将 dll 作为服务安装并运行 有几种不同的方法可以
  • 在Framework 4.6项目中使用.net core DLL

    我已经在 net core 2 0 中构建了一个 DLL 现在我想在使用 net 4 6 1 框架的 WinForms 项目中使用它 我可以引用该 dll 但收到 System IO FileLoadException 表示找不到 Syst
  • 本机 C++ 通过代理 C++ 托管 dll 使用 C# dll

    这相当复杂 所以请耐心听我说 我有一个用本机 仅限 Win32 C 编码的第 3 方程序 目标 作为目标设计的一部分 它实现了一个 dll 插件系统 本机 DLL 当放置在程序的 ext 目录中时 由目标加载 然后 目标根据需要调用每个 D
  • 如何让MCR启动时间快

    我将 matlab 程序转换为 net 程序集 即 dll 文件 我制作了一个控制台 C 应用程序 添加了 dll 文件并从 php 调用它 每次调用 exe 时都会调用 MCR 如何使 MCR 在服务器启动时初始化 并且即使在一段时间后调
  • 使用 Python-VLC 的 PyInstaller:无属性“media_player_new”错误

    我使用 Python VLC 创建视频播放器 并使用 PyInstaller 在 Windows 10 计算机上生成可执行文件 最初 它给了我错误 Import Error Failed to load dynlib dll libvlc
  • 我想在 VB6 程序中使用 VB.NET dll。是否可以?

    我在 VB6 程序中使用 VB NET dll 时遇到问题 我已经使用 GuidAttribute 创建了 dll 使用 RegAsm 创建了 tlb 并将其添加到我的 VB6 程序的引用中 问题是当我尝试使用 CreateObject 函
  • 转储 Windows DLL 版本的命令行工具?

    我需要一个命令行工具来转储标准 Windows DLL 版本信息 以便我可以通过 bash 脚本 Cygwin 对其进行处理 作为一名 Java 开发人员 我不太习惯 Microsoft 开发工具 尽管我对 Microsoft Visual
  • 调试器忽略动态加载的 DLL 中的错误

    我有一个与自编码 DLL 的调试相关的非常奇怪的问题 我有一个 MFC 驱动的基于对话框的应用程序 几个静态链接的项目和几个在运行时加载的 DLL 项目 我在调试中构建解决方案 运行应用程序 然后我可以轻松调试这些 DLL 项目 现在问题来

随机推荐