2010-12-08 1 views
0

Я создаю приложение и использую библиотеку x264 в качестве кодировщика. Я создал библиотеку для моей системы Windows, используя MSys/MingW. Библиотека отлично работает при сборке отладки (обратите внимание, что в сборках debug и release используются настройки по умолчанию VS2010). Тем не менее, при освобождении об ошибке нарушения прав доступа выброшена при первом вызове в библиотеку x264, а именно:libx264 в Visual Studios 2010 - Ошибка памяти в выпуске сборки

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. От связанного SO вопрос, который я получаю впечатление, что он добавил, что «строить с отладчиком информации» в OpenCV построить? Поскольку я создаю библиотеку x264 через MSys с G ++, я не уверен, что смогу это сделать. Я проверил параметры сборки для своего проекта, и под выпуском и отладкой у него есть информация отладчика. Не уверен, что я пропустил что-то в этом посте, пожалуйста, дайте мне знать.
  2. Я попробовал верификатор приложения. Кажется, что x264 пытается выполнить код из неисполнительных памятей как на выходе провер App:

    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. 
    

Все, что необходимо собрать из этого вывода?

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

ответ

2

См. Аналогичную проблему here, см., Поможет ли это вам.

EDIT

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

EDIT

В моем освобождении мнения «Строит с отладчиком информацией» сумму на включение -g переключаться вместе с оптимизацией коммутаторами и выключение любого макроса DEBUG. Также, если вы отладчик подключен (используйте Gflags), чтобы начать процесс с отладчика (возьмите копию windbg и используйте это для отладки).

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

+0

Благодарим вас за ввод, я добавил редактирование своего ОП с результатами ваших предложений. Прокомментируйте, пожалуйста! – DeusAduro 2010-12-09 18:25:30

 Смежные вопросы

  • Нет связанных вопросов^_^