2011-11-11 7 views
1

私のプロジェクトの1つであるWindowsでlibx264を使いたい。共有ライブラリと静的ライブラリを含むcygwinでx264をコンパイルしました。 Everythinはうまく動作し、静的ライブラリと動的ライブラリもcygwinに正しくインストールされています。libx264へのリンクが機能しない(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

あなたはCではなくC++を使用しています。x264はCライブラリであり、おそらく名前が混乱しています。

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

---古い提案が続く試し

---

なぜあなたは単に 'lx264' 'lx264.dll' aginstないanodリンクしていますか?

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

+0

私のコードで2 x264依存のステートメントを省略すると、アプリケーションは完全にコンパイルされます。私はMSのライブラリをリンクすることはここでは問題ではないと思うのです。 – Erik

+0

@Erik自分の編集を参照してください。 – Robert

+0

私はx264とx264.dllとのリンクを試みましたが、違いはありません... – Erik

関連する問題