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 + frameworkCMake (也发出 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.
