Libx264 в Visual Studios 2010 - ошибка памяти в сборке релиза

StackOverflow https://stackoverflow.com/questions/4391193

  •  10-10-2019
  •  | 
  •  

Вопрос

Я строю приложение и использую библиотеку X264 в качестве кодировщика. Я построил библиотеку для моей системы Windows, используя MSYS/Mingw. Библиотека отлично работает в рамках сборки отладки (примечание как отладки, так и настройки выпуска используют настройки по умолчанию VS2010). Однако при выпуске ошибка нарушения доступа выбрасывается при первом вызове библиотеки X264, в частности:

  Unhandled exception at 0x00905a4d in StreamTest.exe:
  0xC0000005: Access violation.

Ошибка брошена на эту строку:

x264_param_default_preset((params), "veryfast", "zerolatency");

В то время как я выяснял, как составить библиотеку, я наткнулся на много разговоров о выравнивании памяти в Windows/Visual Studios и о том, как она не была особенно совместимой с выравниванием, ожидаемом X264. Например, при компиляции в MSYS мне пришлось включить-eNable-memalign-hack. Мне интересно, может ли источник этой ошибки связаться с проблемой выравнивания памяти, которая проявляется только через некоторые настройки в моей сборке. К сожалению, я почти ничего не знаю о специфике и поэтому пришел сюда.

Может ли кто -нибудь дать мне дополнительную информацию о проблемах выравнивания памяти и любых настройках Visual Studio, которые могут вызвать это? Любые другие советы/указатели, чтобы решить эту проблему, очень приветствуются.

Спасибо.

Редактировать

Из ответа ниже:

  1. От связанного с связанным вопросом у меня сложилось впечатление, что он добавил «строительство с информацией о отладчике» в сборку OpenCV? Поскольку я строю библиотеку X264 через MSYS с G ++, я не уверен, что смогу это сделать. Я проверил настройки сборки для своего проекта, а в разделе «Выпуск» и «Отладка» он имеет информацию отладчика. Не уверен, что я что -то пропустил в этом посте, пожалуйста, дайте мне знать.
  2. Я попробовал проверку приложения. Похоже, что X264 пытается выполнить код из неисполнимой памяти в соответствии с выводом Verifier приложения:

    VERIFIER STOP 0000000000000650: pid 0x1B18: 
    

    Попытка выполнить код в неисполнимой памяти (первый шанс).

    0000000000905A4D : Address being accessed.
    0000000000905A4D : Code performing invalid access.
    000000000021EA90 : Exception record. Use .exr to display it.
    000000000021E5A0 : Context record. Use .cxr to display it.
    

Что -нибудь, что можно собрать с этого вывода?

Спасибо еще раз.

Это было полезно?

Решение

Обратитесь к аналогичной проблеме здесь, посмотрите, поможет ли это вам.

РЕДАКТИРОВАТЬ

Опубликуйте, что вы также хотите запустить свое приложение AppVerifier

РЕДАКТИРОВАТЬ

По моему мнению, релиз «Строительница с информацией отладчика» означает включение переключателя -G вместе с переключателями оптимизации и отключением любого макроса отладки. Также, если вы прикрепите отладчик (используйте GFLAGS ) Чтобы начать свой процесс с отладчиком (возьмите копию WindBG и используйте его для отладки).

Когда AppVerifer останавливает ваш процесс использование .CXR Команда для получения контекстной информации. Это должно помочь указать на проблему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top