【发布时间】:2014-05-15 11:05:02
【问题描述】:
我正在用 VC++2008 开发一个项目。该项目使用 OpenCV 库(但我想这适用于任何其他库)。我正在使用调试配置,链接器属性包括库 .lib 的调试版本作为附加依赖项。在工具|选项下的 VC++ 目录中,我设置了包含目录、.lib 目录以及库的源目录。从库中调用其中一个函数时出现错误,我想看看该函数到底在做什么。产生错误的行是:
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));
我在这一行设置了一个断点来查看 cvStereoCalibrate() 函数是如何失败的。不幸的是,当我点击“Step into”时,调试器不会显示这个函数的源代码。它立即跳到 cvTermCriteria()(这是一个简单的内联宏类函数)并显示其内容。我还需要做什么才能在调试器中输入外部库函数吗?
编辑:我认为 cvTermCriteria() 函数显示在调试器中,因为它是在头文件中定义的,因此可以立即访问项目。
EDIT2:库文件缺少 .pdb 文件,现在我在调试配置中重新编译 Visual C++ 中的 OpenCV 库,.pdb 文件存在但调试器仍然不可见:
已加载“C:\Users\DarekSz\Documents\Visual Studio 2008\Projects\libcci\Debug\ccisample.exe”,已加载符号。
“ccisample.exe”:已加载“C:\Windows\SysWOW64\ntdll.dll”
“ccisample.exe”:已加载“C:\Windows\SysWOW64\kernel32.dll”
“ccisample.exe”:已加载“C:\Windows\SysWOW64\KernelBase.dll”
“ccisample.exe”:已加载“C:\OpenCV2.1\bin\cv210d.dll”
'ccisample.exe': 加载 'C:\OpenCV2.1\bin\cxcore210d.dll'
显然没有为 opencv dll 加载符号。尽管如此,.pdb 文件仍存在于 \bin 目录中。
【问题讨论】:
-
OpenCV dll 是否使用调试信息编译?
-
我下载了OpenCV 2.1版本,是专门为vc++2008准备的,它有静态库、普通库和调试库(例如cxcore210.lib vs. cxcore210d.lib) .我正在使用后者。我想它们可能是 dll 的导入库,但我不认为它们是......
-
原来我实际上使用的是导出库中的 dll。
标签: debugging visual-c++ opencv