Как и где добавить символы отладки для проекта 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