2

libavformat を中心にビデオ読み取りコードを作成しようとしています。ここでコンパイル済みの DLL と.libファイルを取得した後、コードをビルドします。提供されたファイルをリンクしても、リンカは libavformat シンボルを見つけることができません 。.lib

で調べるlibavformat.libdumpbin -headers、アンダースコアの接頭辞が付いた目的の関数がエクスポートされていることがわかります。たとえば、 を呼び出したいのですavformat_open_inputが、.lib ファイルは_avformat_open_input.

これはなぜですか? また、プリコンパイル済みの dll をリンクできないのはなぜですか?

4

3 に答える 3

8

libavで使用するには、次のすべてのタスクを実行する必要がありますMSVC++。まずはゼラノエへ

  1. Sharedバージョンをダウンロードし、フォルダ.dllからすべてのファイルをコピーして、生成されるbin出力ディレクトリに貼り付けますexe
  2. バージョンをダウンロードし、フォルダーからすべてのファイルをDeveloperコピーし、メインの c++ ファイルが配置されている場所に貼り付けます (たとえば、ファイルがある場所にファイルを配置する必要があります) 。.liblibFolder-1\Folder-2Folder-1.sln.libFolder-2
  3. Developer手順 2 でダウンロードしたバージョンから、フォルダーからすべてのディレクトリをコピーしinclude、Folder-2 に貼り付けます (手順 2 の Folder-2 の詳細を参照してください)。
  4. inttypes.hstdint.hをダウンロードし、この場所のC:\Program Files\Microsoft Visual Studio 10.0\VC\include\フォルダーに保存します。
  5. ヘッダー ファイルをインクルードするには、次の構文を使用します

externライブラリなので、これを使用する必要libavがありCます。

extern "C" {
    #include "libavcodec/avcodec.h"
    #include "libavdevice/avdevice.h"
    #include "libavfilter/avfilter.h"
    #include "libavformat/avformat.h"
    #include "libavutil/avutil.h"
}
于 2012-08-23T09:23:30.733 に答える
0

.lib静的ライブラリとしてコンパイルするのはどうですか?

于 2012-10-30T08:00:10.937 に答える
0

32 ビット ライブラリを取得すれば問題ありません :) アプリケーション プラットフォームは、使用するライブラリと一致する必要があります (逆も同様です)。

于 2012-07-02T22:30:04.860 に答える