为什么我的应用程序在函数中搜索错误的DLL?

时间:2013-07-04 21:04:21

标签: c++ visual-studio-2010 dll linker

我正在使用Visual Studio 2010编写Qt应用程序。我的应用程序“Review.exe”使用QtAV.dll链接到QtAV.lib。反过来,QtAV链接到ffmpeg,portaudio,gdiplus等。

调试版本可以正常工作。

当我尝试运行发布版本时,我得到: 无法在动态链接库GdipAlloc中找到过程入口点avcodec-54.dll

GdipAllocGdiplus的一部分。为什么要搜索错误的dll函数?这只发生在发布版本中。

如果我将QtAV.dll的发布版本替换为QtAV.dll的调试版本,则Review的发布版本将加载QtAV.dll的调试版本。

在发布版本上设置链接器标志/DEBUG会导致问题消失。但是,我想弄清楚原因和适当的解决方案。

1 个答案:

答案 0 :(得分:0)

我发现它确实发生在vs2010上。 vs2012工作正常。我再次编译vs2010的portaudio(使用cmake非常简单),并通过vs2010工具生成FFmpeg .lib文件,然后再次编译QtAV,这个错误就消失了! 我上传了新的开发文件来构建QtAV。在这里下载FFmpeg-2.0.1_mingw32 + msvc.7z和portaudio-v19_msvc2010x86_20130813.7z:https://sourceforge.net/projects/qtav/files/depends

:)