C++ 错误:在swscale-2.dll中找不到序号139
名义上是ffmpeg问题,但可能是标准windows库和VS版本的问题 跑赢7,VS2010;我的程序使用ffmpeg库和DLL,所以我刚刚将ffmpeg库升级为ffmpeg-1.1.1 win 32 dev for libraries和win32 shared for DLL 在调试模式下运行我的程序,运行正常。已更改为释放模式,重新编译所有并尝试运行。我立即收到错误消息,序号139无法在swscale-2.dll中找到 在两次运行中使用相同的DLL[嗯,我将它们从调试文件夹复制到发布文件夹。是在调试模式下运行时的两次] 有什么线索吗?这件事把我难住了C++ 错误:在swscale-2.dll中找不到序号139,c++,visual-studio-2010,ffmpeg,C++,Visual Studio 2010,Ffmpeg,名义上是ffmpeg问题,但可能是标准windows库和VS版本的问题 跑赢7,VS2010;我的程序使用ffmpeg库和DLL,所以我刚刚将ffmpeg库升级为ffmpeg-1.1.1 win 32 dev for libraries和win32 shared for DLL 在调试模式下运行我的程序,运行正常。已更改为释放模式,重新编译所有并尝试运行。我立即收到错误消息,序号139无法在swscale-2.dll中找到 在两次运行中使用相同的DLL[嗯,我将它们从调试文件夹复制到发布文件夹。
所以我比较了debug和release之间的属性页
- 两者都有多线程调试集(c++/代码生成)
- 发布模式将线性优化引用设置为Yes/OPT:REF,而调试没有李>
==>将其设置为“否”,并且没有收到错误消息“未找到序号39”。这与使用错误的文件几乎没有什么不同。如果您自己构建,请确保:
- 使用FFmpeg生成的正确DLL和LIB文件
- 您的应用程序加载正确的DLL,例如,不是第三方软件安装的\Windows\system32中的DLL
您还可以使用Dependency Walker来识别不匹配,并检查您尝试使用的swscale.dll是否真的有问题的导出函数。不同库和dll的建议是错误的。重新编译库的建议是错误的,因为ffmpeg本质上使用了一些类似Linux的结构,并且只能在windows下编译,因此使用它们的库和DLL是困难的 这是我痛苦地找到的正确答案——不要删除它,因为它实际上是一个正确的答案,适用于任何被“Ordinal xxx找不到i yyy.dll”错误困扰的人 所以我比较了debug和release之间的属性页 两者都有多线程调试集(c++/代码生成) 发布模式将线性优化引用设置为Yes/OPT:REF,而调试没有;
==>将其设置为“否”,但未收到错误消息“未找到序号39”。我在为windows编译ffmpeg时遇到此问题。这总是dll/lib不匹配。即使我的主exe链接到正确的ffmpeg lib,我项目中的某些dll或lib也没有使用新编译的ffmpeg lib。因此,您可能已经正确编译了调试依赖项,而不是版本依赖项。正如我所解释的,调试和发布版本使用相同的库和DLL。所以这是另一回事。