Сбой при запуске приложения из-за наличия невыполненного кода в исходном файле - c ++

Я работаю над довольно сложной задачей, над которой я работаю буквально неделю. Я ударился об очень твердую стену, и у меня болит лоб от удара, поэтому я надеюсь, что кто-нибудь сможет мне помочь.

Я использую Visual Studio 2005 для этого проекта - у меня установлен 2008, но я столкнулся с аналогичными проблемами, когда попробовал его.

У нас есть работающее приложение, скомпилированное с OpenCv1.1, и я пытаюсь его обновить до 2.2. Когда мы переключаем статическую ссылку на новые библиотеки, приложение вылетает - но только в режиме выпуска. Таким образом, динамическое связывание и отладка работают нормально.

Сбой в std :: vector при вызове push_back .

Затем я придумал образец тестового приложения, которое запускается некоторый базовый код в opencv, который отлично работает, а затем взял тот же самый код и добавил его в наше приложение. Этот код не работает.

Затем я выпотрошил приложение, чтобы оно не создавало никаких объектов кода, кроме основного графического интерфейса и класса 1, который вызывал этот код, и оно все равно аварийно завершилось. Однако, если я запускал этот код непосредственно в основном интерфейсе, он работал нормально.

Затем я начал комментировать огромные объемы приложения (в компонентах, которые никогда не должны создаваться), и в конце концов я спустился вниз, пока ...

У меня есть класс с методом

void Foo()  
{  
    std::vector<int> blah;  
    blah.begin();  
}  

Если этот метод определен в заголовке, тестовый код работает, но если этот код определен в файле cpp, происходит сбой. Кроме того, если я использую std :: vector вместо int, он также работает.

Затем я попытался поиграть с параметрами компилятора, и если у меня отключена оптимизация (/ Od) и Для встроенного расширения функции установлено значение Only __inline (/ Ob1), оно работает даже с кодом, находящимся в файле cpp.

Конечно, если мы вернемся к необработанному приложению и изменим эти параметры компилятора сами по себе, оно выйдет из строя.

] Если у кого-то есть идеи по этому поводу, Лирон

10
задан Liron 3 March 2011 в 05:32
поделиться