string - 如何使用调用库函数节点将字符串传递回labview

标签 string dll labview

我想使用LabVIEW的调用库函数节点来访问一个DLL函数,并让这个函数返回一个字符串以显示在我的VI上。我该怎么做呢?我很高兴从我的 DLL 中返回数字,但我真的很难找到任何关于如何返回字符串的示例。

最佳答案

至少有几种方法可以从调用库函数节点返回字符串:

  • 从您的 DLL 函数返回一个 C 字符串指针,并将调用库函数节点配置为具有“C 字符串指针”的返回类型。注意,返回的字符串必须在函数返回后才有效,所以不能是指向栈上分配的字符串的指针。它必须是以下之一:在堆上分配、静态分配、常量字符串文字等。
    看起来像 examples/dll/regexpr/Regular Expression Solution/VIs/Get Error String.vi在 LabVIEW 目录中采用了这种方法。
  • 在您的 VI 中分配一个字符串,使用 Azim 建议的“C 字符串指针”参数将其传递给调用库函数节点,然后覆盖其在 DLL 中的内容。分配字符串的一种方法是使用 Initialize Array 创建所需大小的 u8 数组,然后使用 Byte Array To String 将其转换为字符串。
    确保您传入的字符串足够大以容纳字符串的内容,并确保将字符串长度传递给 DLL,以便它知道缓冲区有多大。我相信默认参数是一个空字符串。如果您的 VI 的第一次猜测不够大,那么确定正确的字符串长度可能需要调用 DLL 两次。
  • 使用“字符串句柄”参数将字符串传递给调用库函数节点,并根据需要使用 DLL 中的 LabVIEW 函数来调整字符串的大小。这要求您的 DLL 专门设计为与 LabVIEW 交互,并且需要链接到 LabVIEW 提供的静态库。
    此方法的一个示例随 LabVIEW 一起提供,名称为 examples/dll/hostname/hostname.vi。 .
  • 关于string - 如何使用调用库函数节点将字符串传递回labview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/269062/

    相关文章:

    Python 和 Labview

    c# - 如何等待服务请求 (RQS)

    java - 格式化字符串解析

    java - 错误 :Compatible type:java. util.String 无法转换为 String

    java - 设置 AWT 列表中字符串的格式

    java - Java 代码中的结果格式不正确

    c++ - 将头文件编译成 DLL

    visual-studio - 发现不同CPU类型的模块

    visual-c++ - 检查 DLL 是否使用 SSE 指令

    c++ - 如何将简单的 API 添加到我的 C++ 应用程序以供 LabView 访问?