Я создаю приложение и использую библиотеку 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, которые могут вызвать это? Любые другие советы/указатели для исправления этой проблемы очень приветствуются.
Спасибо.
Редактировать
От ответа ниже:
- От связанного SO вопрос, который я получаю впечатление, что он добавил, что «строить с отладчиком информации» в OpenCV построить? Поскольку я создаю библиотеку x264 через MSys с G ++, я не уверен, что смогу это сделать. Я проверил параметры сборки для своего проекта, и под выпуском и отладкой у него есть информация отладчика. Не уверен, что я пропустил что-то в этом посте, пожалуйста, дайте мне знать.
Я попробовал верификатор приложения. Кажется, что 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.
Все, что необходимо собрать из этого вывода?
Еще раз спасибо.
Благодарим вас за ввод, я добавил редактирование своего ОП с результатами ваших предложений. Прокомментируйте, пожалуйста! – DeusAduro 2010-12-09 18:25:30