私はWindows上でVisual Studio 2010を使用しているC++プロジェクトに取り組んでいます。私は奇妙なことは、私のx264のコードが完全時々に動作していることであるMinGWでクロスコンパイルされたlibx264を使用すると奇妙で予測できないクラッシュ
http://www.ayobamiadewole.com/Blog/Others/x264compilation.aspx
のガイド次のMinGWを使用して共有ライブラリとして自分自身を建てx264のに対して動的にリンクしています。それから私は、コードのいくつかの行を変更した場合(あるいはファイルのコメントを変更!)と私はファンキーな何もしていないよラインメッセージ
Access violation reading location 0x00000000
で
encoder_ = x264_encoder_open(¶m);
上のすべてのクラッシュを再コンパイル私のコードが間違っているのではないかもしれませんが、リンクに間違ったことがあるか、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%で動作することが判明しました。超高速モードでデバッガが好きではないクレイジーな最適化を行っているのでしょうか?
私たちはHeisenbugを扱っています...幸運。:S –
正確に何がnullであるかを確認するには、デバッガを使用する必要があります。 – Mat
クラッシュはlibx264内にあり、MinGWを使用してビルドされており、MSVCを使用してプロジェクトをビルドしているので、デバッグシンボルはありません。 – Daniel