Visual studio VC++;依赖项链接问题?

Visual studio VC++;依赖项链接问题?,visual-studio,visual-c++,libavcodec,libavformat,Visual Studio,Visual C++,Libavcodec,Libavformat,我的项目正在Visual Studio 2010上使用libavcodec的一些库。 在更新libs(替换Libav中的lib和includes)并解决所有编译器错误(在libavcodec中更改了一些内容3年后)之后,项目编译没有问题,但我编译的dll不起作用 我99%确信这是某种依赖性问题。当然,我不仅更新了项目的链接库,还将正确的新DLL放入了build文件夹 奇怪的是,我从未见过dependency walker从不同的DLL检测到完全错误的导入,见图 如您所见,所有链接的lib似乎都

我的项目正在Visual Studio 2010上使用libavcodec的一些库。 在更新libs(替换Libav中的lib和includes)并解决所有编译器错误(在libavcodec中更改了一些内容3年后)之后,项目编译没有问题,但我编译的dll不起作用

我99%确信这是某种依赖性问题。当然,我不仅更新了项目的链接库,还将正确的新DLL放入了build文件夹

奇怪的是,我从未见过dependency walker从不同的DLL检测到完全错误的导入,见图

如您所见,所有链接的lib似乎都表示相同的导入-这些lib只是不导出的函数

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

extern“C”{
#包括
#包括
#包括
#包括
#包括
#包括
}
我尝试的是:

  • 确保项目使用了正确的lib和头
  • 清理生成路径,尝试调试并发布生成
  • 检查是否有我可能忘记链接的新包含(无论如何,这将导致编译器错误)
  • 重新启动VStudio
  • 构建了一个链接到相同DLL的测试程序,在那里正确的导入将自动显示
  • 用VS 2013编译,没有任何变化

根据您当前的项目设置自定义生成二进制文件是避免像您所面临的那样恼人的链接器错误的关键

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


在系统上安装vcpkg后,转到Powershell提示符并输入。\vcpkg install ffmpeg。安装完成后,请输入“\vcpkg integrate install”,以便可以使用最新的ffmpeg库。

您的回答不是直接的解决方案,我甚至没有尝试处理vcpkg.exe,因为我只是使用zeranoe的构建。无论如何,你的回答启发了我,让我认为ffmpeg构建是问题所在,所以我从3.4.2版改回了3.4.1版,瞧,再也没有链接问题了。如果您编辑您的答案并添加ffmpeg构建可能是问题的假设,我接受;-)因为你帮助了我,而且我认为你很聪明,所以我给你额外的荣誉:-)
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>
}