|
说明:本文档只针对使用文件名指定共享库的情况。如果您使用路径指定共享库,LabVIEW将使用它本身的算法定位该共享库。使用路径指定共享库会在您发布和迁移VI和程序时导致异常的结果。在LabVIEW帮助文档中参看Specifying the Locations of Shared Libraries on Disk(链接见底部) 获取更多相关信息,和LabVIEW如何通过路径加载共享库。
Windows
在Windows 使用文件名指定共享库,LabVIEW 是通过 Win32 函数 LoadLibraryEx
,指定其标志LOAD_WITH_ALTERED_SEARCH_PATH
,定位共享库位置的。MSDN Dynamic-Link Library Search Order(链接见底部) ,列出了这个函数会搜索的路径。LabVIEW 对这个搜索过程做了以下的修改:
<labview>\resource
) 。LoadLibraryEx
前,将 LabVIEW resource 文件夹 (<labview>\resource
) 设置为当前目录。在LoadLibraryEx
调用结束后,LabVIEW 会将当前目录值重置为原先值。Linux
在Linux 使用文件名指定共享库,LabVIEW 是通过调用 dlopen 函数,指定其参数mode
为RTLD_NOW
。 更多信息请参考 dlopen 的主页。此函数会搜索以下路径:
RPATH
LD_LIBRARY_PATH
_CS_LIBPATH
LabVIEW 没有定义LD_LIBRARY_PATH
或 _CS_LIBPATH
的值,但是LabVIEW 会指定以下路径为RPATH
。
对于在LabVIEW 开发环境下运行的VI,RPATH
包涵以下路径,依次为:
General Location | Most Common Path |
<labview>/patchlib | /usr/local/natinst/LabVIEW <year> |
/usr/X11R6/lib | /usr/X11R6/lib |
/usr/lib | /usr/lib |
<labview> | /usr/local/natinst/LabVIEW <year> |
<labview>/linux | /usr/local/natinst/LabVIEW <year>/linux |
<labview>/resource | /usr/local/natinst/LabVIEW <year>/resource |
对于在LabVIEW Run-Time 运行下的LabVIEW生成程序,RPATH
包涵以下路径,依次为:
General Location | Most Common Path |
<labview RTE>/patchlib | /usr/local/lib/LabVIEW <year>/patchlib |
<labview RTE> | /usr/local/lib/LabVIEW <year> |
patchlib directory in the parent directory of <labview RTE> | /usr/local/lib/patchlib |
/usr/X11R6/lib | /usr/X11R6/lib |
/usr/lib | /usr/lib |
parent directory of <labview RTE> | /usr/local/lib |
<labview RTE>/linux | /usr/local/lib/LabVIEW <year>/linux |
linux directory in the parent directory of <labview RTE> | /usr/local/lib/linux |
resource directory in the parent directory of <labview RTE> | /usr/local/lib/resource |
Mac OS X
在Mac OS 使用文件名指定共享库,LabVIEW 能加载 frameworks 和 dylibs. LabVIEW 会首先尝试将这两种共享库作为 framework 加载,搜索以下目录,依次为:
General Location | Most Common Path |
Application's private framework directory | LabVIEW.app/Contents/Frameworks or <Application>.app/Contents/Frameworks |
<labview>/resource | /Applications/National Instruments/LabVIEW <year>/resource |
User Frameworks directory | ~/Library/Frameworks |
<User Application Support>/National Instruments and all subdirectories | ~/Library/Application Support/National Instruments and all subdirectories |
Local Frameworks directory | /Library/Frameworks |
<Local Application Support>/National Instruments and all subdirectories | /Library/Application Support/National Instruments and all subdirectories |
System Frameworks directory | /System/Library/Frameworks |
System Private Frameworks directory | /System/Library/PrivateFrameworks |
如果LabVIEW 以framework 加载共享库失败,LabVIEW 会使用dlopen
函数,尝试以 dylib 的方式加载共享库。参看
说明: 如果指定一个共享库为 library.*
,LabVIEW会将 .*
替换为.framework
。
|