LabVIEW 在运行VI 之前无需编译,是因为 LabVIEW 在把 VI 装入内存的时候、以及在编辑 VI 的同时进行了编译。
当把一个 VI 装入内存时,LabVIEW 先要判断一下这个 VI 是否需要被编译。一般情况下,VI是不需要编译的。但是在两种情况下需要重新编译。第一种,是在高版本 LabVIEW 中打开一个用低版本LabVIEW 保存的 VI;第二种,是在不同的操作系统下装入和打开了同一个 VI。
比如,要在 LabVIEW 8.0 中打开一个原来用 LabVIEW 7.0 编写保存的 VI,则被装入的 VI 需要被重新编译,因为不同版本的 LabVIEW 生成的目标代码会稍有不同。如果你的工程包含有上百个 VI,在新版本的 LabVIEW 中打开顶层 VI,就会明显地察觉到编译所占用的时间。第二种情况的例子是,在 Linux 中打开一个原来是在 Windows XP 下编写保存的 VI,LabVIEW 也需要重新编译。LabVIEW 为不同操作系统生成的目标代码也是不同的。
在以上两种情况下,打开一个 VI 后,会发现 VI 窗口的标题栏中的标题后面出现一个星号,这表示需要重新保存 VI。此时,虽然 VI 中的程序原代码没有改变,但是编译生成的目标代码已经变了,所以需要重新保存。
在LabVIEW 安装了升级补丁之后(比如8.01),程序会提示你是否需要把 LabVIEW 自带的 VI 全部批量编译(mass compile)。如果你选择“是”,则可能需要占用几个小时的时间才能完成编译。
LabVIEW 在你编辑程序原代码的同时,就会对它进行编译。LabVIEW 只编译你当前正在编辑的这个 VI,它的子 VI 已经保存有已编译好的目标代码,所以不需要重新编译了。因为每个 .vi 只相当于一个函数,代码量不会很大,编译速度就相当快,用户基本上是察觉不到的。 你在编写一个LabVIEW程序时,假如你把两个类型不同的接线端联在一起,会看到程序的运行按钮立即断裂,它表示程序已经编译了,并且编译后的代码不可执行。程序编写完毕,所有 VI也都已是被编译好了,程序直接运行即可。
有时会出现这种情况:打开一个 VI,VI 左上方运行按钮上的箭头是断裂的,表示 VI 不能运行。但是点击断裂的箭头,在错误列表里却没有列出任何错误信息。此时箭头断裂是由于 VI 保存的编译后的代码不能执行引起的。例如在上一次打开这个 VI 时,有一个被此VI 调用的 DLL 文件没有找到,编译后的代码自然不能执行。而后关闭 VI 再把缺失的 DLL 文件放回去。下次打开始 VI 时,理论上 VI 应当可以运行了,但是这时 LabVIEW 没有重新编译这个 VI,VI 中保存的是上一次不可执行的代码,所以运行按钮的箭头仍然断裂。而程序原代码没有任何错误,所以错误列表中什么都看不到。
修复箭头状态的方法是按住 Ctrl + Shift 键,再用鼠标左键点击运行按钮(断裂的箭头)。在 LabVIEW 中按住 Ctrl + Shift 键 + 鼠标左键点击运行按钮表示编译,但不运行,这相当于其他语言的 Compile 按钮。