Sto sviluppando un progetto in VC++ 2008. Il progetto utilizza la libreria OpenCV (ma suppongo che ciò si applichi a qualsiasi altra libreria). Sto lavorando con la configurazione di Debug, le proprietà del linker includono le versioni di debug della libreria .lib come dipendenze aggiuntive. Nelle directory VC++ in Strumenti | Opzioni ho impostato la directory include, la directory .lib e anche le directory di origine per la libreria. Ottengo un errore durante la chiamata a una delle funzioni dalla libreria e mi piacerebbe vedere esattamente cosa sta facendo quella funzione. La riga che genera l'errore è:Come eseguire il debug di una libreria esterna (OpenCV) in 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));
a impostare un punto di interruzione in questa linea per vedere come la funzione cvStereoCalibrate() fallisce. Sfortunatamente il debugger non mostrerà il codice sorgente per questa funzione quando premo "Step into". Salta immediatamente al cvTermCriteria() (che è una semplice funzione inline, macro-kinda) e mostra il suo contenuto. C'è qualcos'altro che devo fare per poter inserire le funzioni della libreria esterna nel debugger?
EDIT: Penso che la funzione cvTermCriteria() mostri nel debugger, poiché è definita in un file di intestazione, quindi immediatamente accessibile al progetto.
EDIT2: I file PDB mancavano per i file di libreria, ora ho ricompilato la libreria OpenCV in Visual C++ nella configurazione di debug, esistono i file PDB, ma sono ancora in qualche modo invisibile al debugger:
Caricato 'C: \ Users \ DarekSz \ Documents \ Visual Studio 2008 \ Projects \ libcci \ Debug \ ccisample.exe', Simboli caricati.
'ccisample.exe': Loaded 'C: \ Windows \ SysWOW64 \ ntdll.dll'
'ccisample.exe': Loaded 'C: \ Windows \ SysWOW64 \ kernel32.dll'
'ccisample.exe': Caricato 'C: \ Windows \ SysWOW64 \ KernelBase.dll'
'ccisample.exe': Caricato 'C: \ OpenCV2.1 \ bin \ cv210d.dll'
'ccisample.exe': caricato 'C: \ OpenCV2 .1 \ bin \ cxcore210d.dll '
I simboli non vengono caricati apparentemente per le DLL opencv. Tuttavia, i file .pdb esistono nella directory \ bin.
La DLL di OpenCV è stata compilata con le informazioni di debug? – Mark
Ho scaricato la versione 2.1 OpenCV, quella che è stata preparata appositamente per vC++ 2008, ha librerie statiche, normali e di debug (ad esempio cxcore210.lib vs. cxcore210d.lib). Sto usando quest'ultimo. Suppongo che potrebbero essere librerie di importazione per una DLL, ma non penso che siano ... – neuviemeporte
Risulta che sto usando DLL dalle librerie di esportazione in realtà. – neuviemeporte