Когда я компилирую свое приложение Windows (называемое CrosslinesDetection) в Visual C ++ 2005, включая OpenCV 1.1, библиотеку компьютерного зрения, я не получаю никаких ошибок компиляции или ссылки, но когда я запускаю его, он достигает точки и завис и Windows говорит следующее:
"Unhandled exception at 0x7c915223 in CrosslinesDetection.exe:
0xC0000005: Access violation writing location 0x00030ffc."
Программа представляет собой обычное приложение C ++ для Windows с двумя строками кода OpenCV:
IplImage *img = cvCreateImage( cvSize( 1024, 768 ), IPL_DEPTH_8U, 1 );
cvReleaseImage( &img );
Странное поведение сейчас, если я
- включить строки OpenCV, программа выдает исключение
- исключить строки OpenCV, программа работает нормально.
Я без проблем использовал библиотеки OpenCV в другом проекте. В частности, я создал проект C # для GUI и проект C ++, скомпилированный как DLL в фоновом режиме. Если я создаю такое решение для приведенных выше строк, у меня не возникает проблем во время выполнения.
Кто-нибудь знает, что может вызвать эту ошибку?
Спасибо за любую помощь, Стефан
Спасибо за комментарии.
Тем временем я использую минимальный проект для тестирования.
Я до сих пор не до конца понимаю проблему, но между тем я выяснил, что исключение происходит, когда я включаю стороннюю библиотеку (от uEye).
Если я использую одну функцию из OpenCV и из библиотеки uEye в проекте, возникает исключение. Если я использую одну функцию из OpenCV или uEye, исключение не выдается. Таким образом, эти библиотеки кажутся несовместимыми, или есть другая проблема. Однако я не знаю, как это обнаружить.
Нет, не сейчас. В минимальном примере функции не связаны. Одна функция инициализирует камеру, а другая - инициализирует структуру изображения.
Но, возможно, ошибка в другом месте ...
Я создал в Visual Studio приложение Windows Form C ++. Я добавил в форму кнопку и соответствующую функцию в файле Form1.h:
private: System::Void Form1_Click(System::Object^ sender, System::EventArgs^ e) {
OpenCamera();
IplImage * img = cvCreateImageHeader( cvSize( 1024, 768 ), IPL_DEPTH_8U, 1);
cvReleaseImage( &img );
CloseCamera();
}
И я добавил headeras в начале Form1.h:
#include "CameraControl.h"
#include "cv.h"
Затем мне пришлось отключить предварительно скомпилированный заголовок, и мне пришлось перейти с / clr: pure на / clr, чтобы успешно скомпилировать и связать проект.
Но, затем я запускаю программу, выброшенное выше исключение ...
Мне интересно, если я неправильно использую приложение Windows Form Form C ++, и мне не следует включать мой чистый код C ++ или действительно есть проблема с OpenCV или библиотекой uEye.