Я работаю над этой проблемой в течение двух дней, и это сводит меня с ума, так как я все еще плохо знаком с C ++.Эта проблема с нарушением прав доступа может быть довольно простой для вас, и на нее можно ответить тысячи раз.Но из-за недостатка знаний C ++ я даже не могу определить ту же проблему, на которую когда-либо отвечали.
Хорошо, вот моя проблема:
1. Основной код находится вDLL.Я использую Visual Studio 2008
2. Эта DLL-библиотека называется 3 внешними библиотеками: boost, tinyXML и SRILM (инструментарий NLP).
3. Ошибка говорит: Unhandled exception at 0x5f4f068f (TextNormalizerAPI.dll) in tester.exe: 0xC0000005: Access violation reading location 0x00000000.
, произошла только в режиме отладки.И строка ошибки была вызвана инициализацией объекта boost :: regex (patUsername = regex("^\\W*@[A-Za-z]");
) в моем коде, но фактическая позиция была глубоко внутри библиотеки boost, как показано на рисунке ниже:
![The error occurred in boost lib, not in my code](https://i.stack.imgur.com/p0Y6N.png)
** в большинстве случаев я не должен менять исходный код Boost lib, не так ли?**
4. Эта ошибка произошла только в версии отладки, а не в версии выпуска.
5. Я заменяю все решение настарая, но безошибочная версия, которая правильно работала в режиме отладки.Тем не менее, сразу после создания версии выпуска этого решения в режиме отладки произошла ошибка!
ОБНОВЛЕНИЕ:
6. Спасибо, ребята!Я только что попробовал и обнаружил, что даже простое определение объекта регулярного выражения в первой строке записи DLL приведет к этой ошибке!Есть идеи?
7. пока инициализировать объект регулярного выражения в первой строке в main () вызывающей стороны этого dll не возникнет эта проблема.
Надеюсь, что это описание будетпомочь вам вспомнить что-нибудь и дать мне подсказку.
Я хочу спросить:
Какова обычная стратегия сужения и определения проблемы?спасибо!