VC++ 依赖链接问题?

VC++ dependencies linking issue?

我的项目在 Visual Studio 2010 上使用了一些 libavcodec 库。 更新库(替换库并包含来自 Libav)并解决所有编译器错误(3 年后 libavcodec 中发生了一些变化)后,项目编译没有问题,但我编译的 dll 不起作用。

我 99% 确定这是一些依赖性问题。当然,我不仅更新了项目的 linked 库,而且还将正确的新 dll 放入构建文件夹中。

我从未见过的奇怪事情是 dependency walker 检测到来自不同 dll 的完全错误的导入,请参见图片。

如您所见,所有 linked 库似乎都指示相同的导入 - 这些库只是不导出的功能。

除了在 linker 部分指定库之外,我在这个方向上唯一做的就是在我的程序中包含 .h 文件,然后当然会大量使用它们;-)

extern "C" {   
#include <libavcodec/avcodec.h>    
#include <libavutil/opt.h>
#include <libavutil/imgutils.h>        
#include <libavformat/avformat.h>        
#include <libswscale/swscale.h>
#include <libswresample\swresample.h>
}

我尝试了什么:

根据您当前的项目设置自定义构建二进制文件是避免烦人的链接器错误的关键,就像您所面临的那样。

您可以使用 github 中的 vcpkg.exe 构建 ffmpeg 项目并为 x86 或 x64 机器重建二进制文件。

在您的系统上安装 vcpkg 后,转到 Powershell 提示符并输入 .\vcpkg install ffmpeg。安装完成后输入“.\vcpkg integrate install”,这样你最新的ffmpeg库就可以使用了。