1

Windowsのプロジェクトの1つでlibx264を使用したいと思います。共有ライブラリと静的ライブラリを含むcygwinを使用してx264をコンパイルしました。Everythinは正常に動作し、静的ライブラリと動的ライブラリもcygwinに適切にインストールされます。

libx264(gcc ... -lx264)を使用する別のプロジェクトをコンパイルしようとすると、エラーが発生します。

/cygdrive/c/Users/Erik/workspace/test/Debug/../main.cpp:406: undefined reference to `x264_param_default_preset(x264_param_t*, char const*, char const*)'
/cygdrive/c/Users/Erik/workspace/test/Debug/../main.cpp:425: undefined reference to `x264_param_apply_profile(x264_param_t*, char const*)'

リンカはlibx264のビルドされたライブラリに問題があるようですが、ここで正確に何が問題になっていますか?x264を正しくリンクするにはどうすればよいですか?

完全なビルド出力は次のようになります。

プロジェクトテスト用の構成デバッグのビルド**

make all 
Building target: test.exe
Invoking: Cygwin C++ Linker
g++ -L"/cygdrive/c/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/Lib" -L"/cygdrive/c/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x86" -L/usr/local/lib -o "test.exe"  ./main.o   -lx264.dll -lKernel32 -lUser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -ld3dx9d -ld3d9 -loleaut32 -luuid -lm
./main.o: In function `_Z8InitX264ii':
/cygdrive/c/Users/Erik/workspace/test/Debug/../main.cpp:406: undefined reference to `x264_param_default_preset(x264_param_t*, char const*, char const*)'
/cygdrive/c/Users/Erik/workspace/test/Debug/../main.cpp:425: undefined reference to `x264_param_apply_profile(x264_param_t*, char const*)'
collect2: ld returned 1 exit status
make: *** [test.exe] Error 1

**** Build Finished ****

ご協力いただきありがとうございます!

4

1 に答える 1

4

CではなくC++を使用しています。x264はCライブラリであり、名前が壊れている可能性があります。

試す

extern "C" {
    #include "x264.h"
}

---古い提案が続きます---

なぜ「lx264」だけでなく「lx264.dll」と「anod」をリンクしているのですか?

また、Microsoft .libファイルをリンクしようとしているようです。通常、オブジェクトファイルはコンパイラ/リンカー間でバイナリ互換ではありません...Cygwinでは異なる場合があります。そして、以下のあなたのコメントによると、それは異なります...だから気にしないでください。

于 2011-11-11T17:24:34.833 に答える