0

名义上是一个 ffmpeg 问题,但它可能是标准 Windows 库和 VS 版本的问题

运行Win 7、VS2010;我的程序使用 ffmpeg 库和 dll,所以我刚刚将 ffmpeg 库升级到 ffmpeg-1.1.1 win 32 dev 用于库和 win32-shared 用于 dll。

在调试模式下运行我的程序,它运行良好。更改为发布模式,重新编译所有并尝试运行。我立即收到错误消息 Ordinal 139 could not be located in swscale-2.dll

两次运行都使用相同的 dll [好吧,我将它们从 Debug 文件夹复制到 Release 文件夹。两次],就像我在调试模式下运行时一样。

有什么线索吗?这个让我难住了。


所以我正在比较调试和发布之间的属性页。

  • 两者都有多头调试集(C++/代码生成)
  • 发布模式将线性优化引用设置为 Yes /OPT:REF 而调试没有;

==> 将其设置为 NO 并没有收到错误消息 re Ordinal 39 not found。

4

3 回答 3

0

我在为 Windows 编译的 ffmpeg 中遇到了这个问题。它总是一个 dll/lib 不匹配。即使我的主 exe 链接到正确的 ffmpeg 库,我的项目中的某些 dll 或库也没有使用新编译的 ffmpeg 库。所以你可能已经正确编译了你的调试依赖而不是你的发布依赖。

于 2013-04-01T22:08:16.043 回答
0

这与使用错误文件几乎没有什么不同。如果您自己构建它们,请确保:

  • 您使用 FFmpeg 生成的正确 DLL 和 LIB 文件
  • 您的应用程序加载正确的 DLL,例如第三方软件安装的位于 \Windows\system32 中的那些

您还可以使用 Dependency Walker 来识别不匹配并检查您尝试使用的 swscale.dll 是否确实具有相关的导出函数。

于 2013-02-18T17:17:03.883 回答
0

不同 lib 和 dll 的建议是错误的。重新编译库的建议是错误的,因为基本上 ffmpeg 使用了一些类似 Linux 的结构,并且只能为 Windows 编译困难,因此使用它们的 lib 和 dll。

这是我以痛苦的方式找到的正确答案——不要删除它,因为它实际上是任何陷入“无法找到序数 xxx i yyyy.dll”错误的人的正确答案

所以我正在比较调试和发布之间的属性页。

两者都有多头调试集(c++/代码生成)发布模式将线性优化引用设置为 Yes /OPT:REF 而调试没有;==> 将其设置为 NO 并没有收到错误消息 re Ordinal 39 not found。

于 2013-02-19T01:17:03.233 回答