LabVIEW转换工具

OpenLV是一个将LabVIEW VIs转换为文本模型和AST的工具,支持分析、伪代码生成、UML/数据流图生成、图形到脚本的快速转换以及通过内置MCP服务器提供AI/LLM洞察。

  • by hafshari
  • LabVIEW
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 hafshari/OpenLV

使用说明

OpenLV

OpenLV使用VI脚本将LabVIEW VI转换为文本模型和AST,通过内置的MCP服务器实现分析、伪代码、UML/数据流图、快速图形到脚本的转换以及AI/LLM洞察。

克隆

LabVIEW VI存储在 Git LFS。克隆后,运行 git lfs install 一次,然后 git lfs pull 如果VI缺失。

LabVIEW EXE/stdout/运行时(跨平台注释)

执行摘要和社区模式(DLL与代理CLI、RTE部署): docs/labview-exe-stdio和运行时.md.

本地stdio助手(lv_stdio)

实验共享库(std::cout / std::cerr 通过 extern "C")有关从LabVIEW加载时验证CLI样式输出的信息,请参阅 本地/lv_strio.

CMake+忍者 (之后 pip install -r requirements-build.txt 所以 cmake / ninja 在 PATH):

cd native/lv_stdio
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build

制造 (仅限macOS/Linux;没有额外的Python deps):

cd native/lv_stdio
make

使用 make clean 移除 native/lv_stdio/build/.

开 macOS 人工制品是 build/liblv_stdio.dylib;on Linux build/liblv_stdio.so;on 视窗 使用CMake-- Makefile 仅针对类Unix工具链。

macOS: .bundle 和 .framework (LabVIEW 导入共享库)

导入共享库向导(不包括任何系统): native/lv_stdio/include/lv_stdio_clfn.h.完整的API包装: lv_stdio.h.

制造 (从 native/lv_stdio):

make bundle      # → build/liblv_stdio.bundle (MH_BUNDLE)
make framework   # → build/lv_stdio.framework/ (Versions/A, Headers, symlinks)
make macos-all   # dylib + bundle + framework

CMake (也发出 build/lv_stdio.framework 当你构建苹果时 lv_stdio_framework 目标):

cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build --target lv_stdio_framework
# Framework: build/lv_stdio.framework

快速符号检查: nm -gU build/liblv_stdio.bundle | grep lv_stdio

注: 更喜欢 .bundle 对于单个文件;使用 .framework 当你想要标准的macOS布局时。本地开发人员通常需要 无代码签名看门人是分销的另一个关注点。

LabVIEW CLFN/导入共享库(我们学到了什么)

  • 向导的标题: 使用 lv_stdio_clfn.h 仅(否 stdint.h,没有 #ifdef __cplusplus).设置向导 包含路径 到 native/lv_stdio/include 目录——不是macOS SDK。
  • macOS上的库路径: 将调用库函数节点指向一个真正的Mach-O:例如。 …/build/liblv_stdio.dylib 或 …/build/lv_stdio.framework/lv_stdio (捆绑包内的二进制文件),而不是 .framework 仅目录。
  • 符号名称: 导出的C符号通常 _lv_stdio_* 在 nm -gU。如果LabVIEW报告“找不到功能”,请尝试使用前导下划线或确认 nm 在 同一文件 LabVIEW加载。
  • lv_stdio_exit: 声明为 void lv_stdio_exit(int exit_code) / I32,按值传递--不是 long /I64(在64位macOS上, long 是64位)。
  • 构建/链接器行为: 图书馆是用 -fvisibility=hidden (Make/CMake)仅此而已 LV_STDIO_API 符号输出;这使动态符号表保持可预测性 dlsym. lv_stdio_exit 被标记 noinline 因此,它仍然是一个独特的导出入口点(有助于导入向导和加载器;与上面的可见性模式配对)。 [[noreturn]] 在声明(C++)文档中,该过程通过以下方式结束 std::exit.