Estoy desarrollando un proyecto en VC++ 2008. El proyecto usa la biblioteca OpenCV (pero supongo que esto se aplica a cualquier otra biblioteca). Estoy trabajando con la configuración de depuración, las propiedades del enlazador incluyen las versiones de depuración de la biblioteca .lib como dependencias adicionales. En los directorios de VC++ en Herramientas | Opciones configuré el directorio de inclusión, el directorio .lib y los directorios de origen de la biblioteca también. Aparece un error al llamar a una de las funciones de la biblioteca y me gustaría ver exactamente qué está haciendo esa función. La línea que produce el error es:Cómo depurar una biblioteca externa (OpenCV) en Visual C++?
double error = cvStereoCalibrate(&calObjPointsM, &img1PointsM, &img2PointsM,
&pointCountsM,
&cam1M, &dist1M, &cam2M, &dist2M, imgSize, &rotM, &transM, NULL, NULL,
cvTermCriteria(CV_TERMCRIT_ITER + CV_TERMCRIT_EPS, 100, 1e-5));
I fijó un punto de interrupción en esta línea para ver cómo falla la función cvStereoCalibrate(). Desafortunadamente, el depurador no mostrará el código fuente de esta función cuando pulso "Entrar". Se salta inmediatamente a cvTermCriteria() (que es una función simple en línea, macro-algo) y muestra su contenido. ¿Hay algo más que deba hacer para poder ingresar a las funciones de la biblioteca externa en el depurador?
EDIT: Creo que la función cvTermCriteria() se muestra en el depurador, porque está definida en un archivo de encabezado, por lo tanto, inmediatamente accesible para el proyecto.
Edit2: Los archivos .pdb faltaban para los archivos de la biblioteca, ahora recompilado la biblioteca OpenCV en Visual C++ en la configuración de depuración, existen los archivos .pdb, pero siguen siendo de alguna manera invisible para el depurador:
Cargado 'C: \ Users \ DarekSz \ Documents \ Visual Studio 2008 \ Projects \ libcci \ Debug \ ccisample.exe', Símbolos cargados.
'ccisample.exe': Cargado 'C: \ Windows \ SysWOW64 \ ntdll.dll'
'ccisample.exe': Cargado 'C: \ Windows \ SysWOW64 \ kernel32.dll'
'ccisample.exe': Cargado 'C: \ Windows \ SysWOW64 \ KernelBase.dll'
'ccisample.exe': Cargado 'C: \ OpenCV2.1 \ bin \ cv210d.dll'
'ccisample.exe': Cargado 'C: \ OpenCV2 .1 \ bin \ cxcore210d.dll '
Los símbolos no se cargan aparentemente para los dlls de opencv. Aún así, los archivos .pdb existen en el directorio \ bin.
¿Se compiló el archivo DLL de OpenCV con información de depuración? – Mark
He descargado la versión 2.1 OpenCV, la que está preparada especialmente para vC++ 2008, tiene librerías estáticas, normales y de depuración (por ejemplo, cxcore210.lib vs. cxcore210d.lib). Estoy usando el último. Supongo que podrían importar libs para un dll, pero no creo que sean ... – neuviemeporte
Resulta que estoy usando dlls de libs de exportación en realidad. – neuviemeporte