2

私はここではまったくの初心者ですが、質問に答えてほしい場合は、stackoverflow で質問できると聞きました >.<. だから私の質問があまりにも些細なことではないことを願っています.私もここで聞いてみようと思いました。

それで...

ここ数日、opengl などをいじって、ビデオ プレーヤーを作成しようとしています。

ただし、ffmpeg ライブラリ (avcodec、avformat、avutils など) をインポートしようとすると、実行時にエラーが発生します (プログラムは正常にコンパイルされます)。コンパイルしてデバッグ モードで実行すると、エラー メッセージにはメモリ アドレスとエラー コード 135 (DLL が見つかりません) のみが表示されます。

このエラーは、これらのライブラリの関数をコード (av_register_all() など) に含めると発生し、関数が実際に呼び出されるかどうかに関係なく発生します。

だから私はこれらのライブラリをリンクするときに何か間違っていると思っています。現在使用しているもの: Windows Vista (32bit)、Qt Creator 2.4.1 ベースの Qt 4.7.4 (32bit)、Zeranoe の FFmpeg ビルド git-3233ad4 (2012-06-30)

私の .pro ファイルは次のもので構成されています。

QT       += core gui opengl

TARGET = test
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp \
    glwidget.cpp

HEADERS += mainwindow.h \
    glwidget.h \

FORMS    += mainwindow.ui


LIBS += -L"$$_PRO_FILE_PWD_/libraries/ffmpeg/libs/" -lavcodec -lavformat -lavutil
INCLUDEPATH += libraries/ffmpeg/includes

LIBS += 行に対して多くのバリエーションを試し、ファイルパスを何度も確認しました。ただし、これらすべてのバリエーションで DLL が見つからないというエラーが発生します =(.

これらのインクルードを行うときに忘れていることはありますか?

前もって感謝します>.<、(若くて素朴な)意欲的な開発者

4

1 に答える 1

1

このエラーは、DLL が見つからないことを示しており、ffmpeg 関数をインクルードすると発生するため、ffmpeg ライブラリが動的にリンクされている (つまり、DLL である) ことを意味します。つまり、exe が機能するには、ffmpeg DLL をロードする必要があります。これらの DLL は、exe ファイルと同じディレクトリに配置する必要があります。そこにコピーします。依存関係ウォーカーを使用して、コピーする必要がある DLL を確認しますがavcodec-52.dll, avdevice-52.dll, avformat-52.dll, avutil-49.dll、ffmpeg のビルドに応じて、次のようになります。

于 2012-07-05T12:50:19.890 に答える