0

通常は ffmpeg の問題ですが、標準の Windows ライブラリと VS のバージョンで問題になる可能性があります

Win 7、VS2010 を実行しています。私のプログラムはffmpegライブラリとdllを使用しているので、ffmpegライブラリをライブラリ用にffmpeg-1.1.1 win 32 devに、dll用にwin32-sharedにアップグレードしました。

プログラムをデバッグ モードで実行したところ、問題なく動作しました。リリースモードに変更し、全て再コンパイルして実行してみました。すぐにエラーメッセージ Ordinal 139 could not be located in swscale-2.dll が表示されます

両方の実行に同じ dll を使用します [まあ、それらを Debug フォルダーから Release フォルダーにコピーしました。デバッグモードで実行したときと同じです。

手がかりはありますか?これは私を困惑させました。


そのため、デバッグとリリースのプロパティ ページを比較しています。

  • どちらもマルチスレッド デバッグ セット (c++/コード生成) を備えています。
  • リリース モードではライナー最適化の参照が Yes /OPT:REF に設定されていますが、デバッグには何も設定されていません。

==> NO に設定すると、Ordinal 39 not found に関するエラー メッセージが表示されませんでした。

4

3 に答える 3

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 を使用するためです。

これは私が苦労して見つけた正解です。これは実際には「Ordinal xxx could not found i yyyy.dll」のバグで立ち往生している人の正解であるため、これを削除しないでください。

そのため、デバッグとリリースのプロパティ ページを比較しています。

両方ともマルチスレッド デバッグ セット (c++/コード生成) を持っています。リリース モードではライナー最適化参照が [はい] に設定されています。==> NO に設定すると、Ordinal 39 not found に関するエラー メッセージが表示されませんでした。

于 2013-02-19T01:17:03.233 に答える
0

Windows用にコンパイルされたffmpegでこの問題が発生しました。それは常に dll/lib の不一致でした。正しいffmpegライブラリにリンクされたメインのexeファイルでさえ、私のプロジェクトの一部のdllまたはlibは、新しくコンパイルされたffmpegライブラリを使用していませんでした。したがって、リリースのものではなく、デバッグの依存関係を正しくコンパイルした可能性があります。

于 2013-04-01T22:08:16.043 に答える