加载和可执行文件不在同一文件夹下的动态库

引入

有如下图中的文件结构,TestVideoCodec.exe 需要动态加载 Plugins 文件夹下面的 xxx.dll;xxx.dll 又链接了其他库,这些库放在Plugins下面,为了使程序能够正确加载到 xxx.dll,则需要按照后续章节中的描述进行加载或设置。

加载和可执行文件不在同一文件夹下的动态库_第1张图片

Windows 下

代码中加载动态库时使用:

LoadLibraryExA(filename, NULL, LOAD_WITH_ALTERED_SEARCH_PATH)

注:其中 filename(dll路径)需要设置绝对路径并且路径中文件夹的分隔符只能是 \\

Linux 下

使用 LD_LIBRARY_PATH 指定需要调用的库的位置。例如:

#!/bin/bash

current_path=.
plugins_path=./Plugins/

export LD_LIBRARY_PATH=$current_path:$plugins_path:$current_path:$LD_LIBRARY_PATH

# set collect core file.
ulimit -c 1000000
ulimit -n 100000

$(pwd)/testVideoCodec

你可能感兴趣的:(c++,windows,linux)