Я работаю над проектом C ++ с использованием Visual Studio 2010 в Windows.Я динамически связываюсь с x264, который я создал как общую библиотеку, используя MinGW, следуя инструкции на
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%.Может быть, сверхбыстрый режим выполняет сумасшедшие оптимизации, которые не нравятся отладчику?