动态导入库

在 Windows 系统里链接动态库时,编译阶段链接的是动态库的导入库(.lib 文件),而程序运行时依赖的是具体的动态链接库(.dll 文件)

编译阶段:链接导入库

  • 导入库的作用:导入库是一个相对较小的文件,它主要包含了动态链接库中导出函数和变量的符号信息,如函数名、参数类型、返回值类型等。在编译和链接过程中,链接器会读取导入库中的符号信息,并将这些信息嵌入到可执行文件中。这样,可执行文件在运行时就知道要从哪个动态链接库中加载哪些函数和变量。
  • 链接方式:在 Qt 的 .pro 文件或者其他编译配置中,使用 -l-L 选项来指定要链接的导入库。
1
2
3
4
5
6
7
8
9
10
11
12
13
win32: {
LIBS += -L$$DESTDIR/ffmpeg/lib/ # 动态库路径
# 动态导入库 下列都是动态导入库,不是静态库
LIBS += "$$PWD/ffmpeg/lib/avcodec.lib"
LIBS += "$$PWD/ffmpeg/lib/avdevice.lib"
LIBS += "$$PWD/ffmpeg/lib/avfilter.lib"
LIBS += "$$PWD/ffmpeg/lib/avformat.lib"
LIBS += "$$PWD/ffmpeg/lib/avutil.lib"
LIBS += "$$PWD/ffmpeg/lib/postproc.lib"
LIBS += "$$PWD/ffmpeg/lib/swresample.lib"
LIBS += "$$PWD/ffmpeg/lib/swscale.lib"
#win32: LIBS += -L$$PWD/ffmpeg/lib/ -lavcodec -lavdevice -lavfilter -lavformat -lavutil -lpostproc -lswresample -lswscale
}