Как и где добавить символы отладки для проекта Visual С++ OpenCV
Я создал проект OpenCV С++ в Visual Studio 2012. Для его работы я использовал страницы свойств проекта для
- Дополнительные каталоги: $(SolutionDir)..\Libs\OpenCV\2.4.6\include
- Дополнительные библиотеки: $(SolutionDir)..\Libs\OpenCV\2.4.6\$(Платформа)\$(Конфигурация)
- Дополнительные зависимости: различные файлы, включая
opencv_highgui246d.dll
-
Post-Build Event, Command Line: копирует файлы DLL и lib и некоторый пример содержимого таким образом:
xcopy/y $(SolutionDir)..\Libs\OpenCV\2.4.6\$(Платформа)\$(Конфигурация) *.dll $(ProjectDir) $(Платформа)\$(Конфигурация) \
xcopy/y $(SolutionDir)..\Libs\OpenCV\2.4.6\$(Платформа)\$(Конфигурация) *. lib $(ProjectDir) $(Платформа)\$(Конфигурация) \
xcopy/y $(ProjectDir) opencv-logo.jpg $(ProjectDir) $(Платформа)\$(Конфигурация) \
xcopy/y $(ProjectDir) sample.wmv $(ProjectDir) $(Платформа)\$(Конфигурация)\
Строки кода, которые я пытаюсь отлаживать, более или менее те же, что и в примере кода для класса VideoCapture
OpenCV: http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html
VideoCapture cap(0); // open the default camera
if(!cap.isOpened()) // check if we succeeded
return -1;
но я открываю файл
VideoCapture cap ("sample.wmv");
if (FileExists("sample.wmv"))
{
OutputDebugString("File exists\n");
}
else
{
OutputDebugString("File does not exist\n");
}
if(!cap.isOpened())
{
cout <<"Failed to open camera" << endl;
OutputDebugString("Failed to open camera\n");
return -1;
}
Что-то не так, поэтому я хочу проверить, что свойства находятся на cap
, установив точку останова на строке if(!cap.isOpened())
. Но если я попытаюсь изучить cap
в окне locals в Visual Studio 2012, я получу ошибку:
"Информация недоступна, не загружены символы для opencv_highgui246d.dll"
Я не знаком с настройкой проектов на С++ в Visual Studio (я использую в основном С# в течение многих лет); что мне нужно сделать, чтобы включить эту отладку? Должен ли я сам создавать OpenCV (и если да, какой результат я должен использовать где), или есть ли больше файлов, которые я могу скопировать и включить в свою сборку?
Ответы
Ответ 1
-
проблема: вы используете библиотеки prebuild, которые поставляются с 2.4.6, вы сможете отлаживать свой собственный код, но вы не можете погрузиться в opencv libs (например, highgui246d.dll).
-
причина: файлы pdb, необходимые для этого, не поставляются (подумайте об этом, чтобы взорвать загрузку до диапазона гигабайта)
-
Средство устранения: если вам действительно нужно копать в opencv libs во время отладки, вам придется перекомпилировать их (cmake и все эти jive), так как это фактически сгенерирует необходимые файлы pdb