Windows で Visual Studio 2010 を使用して C++ プロジェクトに取り組んでいます。次のガイドに従って、MinGWを使用して共有ライブラリとして自分で構築したx264に対して動的にリンクしています
http://www.ayobamiadewole.com/Blog/Others/x264compilation.aspx
奇妙なことに、私の x264 コードは時々完全に機能します。次に、コードの一部の行を変更し (またはファイル内のコメントを変更することさえあります!)、すべてを再コンパイルすると、その行でクラッシュします。
encoder_ = x264_encoder_open(¶m);
メッセージとともに
Access violation reading location 0x00000000
ファンキーなことはまったくしていないので、おそらく私のコードが間違っているわけではありませんが、リンクに問題があるか、x264 のコンパイル方法に問題があると思います。
完全な初期化コード:
x264_param_t param = { 0 };
if (x264_param_default_preset(¶m, "ultrafast", "zerolatency") < 0) {
throw KStreamerException("x264_param_default_preset failed");
}
param.i_threads = 1;
param.i_width = 640;
param.i_height = 480;
param.i_fps_num = 10;
param.i_fps_den = 1;
encoder_ = x264_encoder_open(¶m); // <-----
if (encoder_ == 0) {
throw KStreamerException("x264_encoder_open failed");
}
x264_picture_alloc(&pic_, X264_CSP_I420, 640, 480);
編集:常にリリース モードで動作し、超高速の代わりに超高速を使用すると、デバッグ モードでも 100% 動作することが判明しました。超高速モードが、デバッガーが好まないクレイジーな最適化を行っている可能性がありますか?