labview中,用相对路径动态调用的子VI,在生成EXE文件后无法调用问题的解决

         搞了一天的时间,终于把问题解决了。网上搜了很多方法试了都没效果,最后看到这个帖子,按照帖子上的方法操作之后成功了。现在把原文贴过来。

原帖地址:http://www.mufenglv.com/forum.php?mod=viewthread&tid=66


 在LabVIEW编程过程中,常常用到“当前VI路径”模块,将其和“创建路径”模块结合使用,就可以得到VI所在目录下的任何一个路径。然而当把vi文件打包成exe文件之后,因为labview回把exe视作是额外的一层目录,因此会导致依赖相对路径的各部分功能无法运转。

 这个问题,你如果看过《我和LabVIEW》那本书,在263页那里已经说明了。
我摘抄一下:在生成EXE文件后。LV会把这些VI封装到EXE里面。这个时候,EXE相当于一个虚拟文件夹,那些VI都在EXE这个虚拟文件夹内部。
你可以用创建显示路径试试看。会发现路径会多个“.EXE”.
如果你动态调用。那你路径,应该知道这个  EXE虚拟文件夹下的vi里。
而且,你要在 源文件 始终包括里,加上你的VI。

如果你VI的路径是 ABC\123.VI.
那么你EXE里的这个Vi路径是  ABC\应用程序.EXE\123.VI.
至于别人说的,拆不拆路径,一般是针对 其他文件,例如数据文本之类的。如果调用VI。不用拆分。
看实际情况了。
        



给你举例子吧。这样容易懂。
下面,我的主VI,是Welcome_gui.vi
  我要动态调用运行choose.vi.注意我的文件层次。
   choose.vi在SUBVI文件夹下。
  一定要把你调用到的文件夹和VI都放到项目文件里。最简单方法,就只直接拖动文件或者文件夹到项目里。
  如果你不拖动,后面的添加原文件,是填不进去的(当然,有些有依赖关系的,系统会自动给你添加,不过既然是动态调用,就没有依赖关系了。)。
  
   看图。



看我vi里的调用。很常见。没有拆分什么的吧。拆分不拆分,看实际情况,要分析清楚,不要盲目。




然后主VI,到启动里。其他连同文件夹添加到 适中包含。这样,始终包含的就会被放到EXE这个虚拟文件夹下面。
一定要弄清楚这个虚拟文件夹。



以下是运行环境下的路径。看图。可以调用调用的vi.对吧。?


以下是 EXE下的环境调用。照样可以调用。




没什么特别的地方。其实很容易。不用改什么。

只要记得,生成EXE,会都一层路径,然后把vi放到EXE这个文件夹下。

展开阅读全文

没有更多推荐了,返回首页