Compressive Tracking C++ 代码Visual Studio2013 调试错误大全
来源:互联网 发布:简单的c语言程序文件 编辑:程序博客网 时间:2024/06/06 11:40
之前学习了Kaihua Zhang 的compressive tracking,其Matlab和C++/C#代码在主页http://www4.comp.polyu.edu.hk/~cslzhang/CT/CT.htm 上面都可以下载到。
Matlab代码基本上可以直接运行。不过C++代码由于VS和OPENCV的版本不同,造成库有些不同,而且存在一些默认的配置路径的问题,在调试时会出现各种错误。本博客收集了调试该代码时出现的所有错误,可以供后来学习compressive tracking的同学予以参考。
(本博客系原创,转载请注明出处:http://blog.csdn.net/xuexiyanjiusheng/article/details/46877275)
由已有的cpp和h文件重新建立工程调试。
(1)error C2664: “FindFirstFileW”: 不能将参数 1 从“char [261]”转换为“LPCWSTR”
在写Tracking的代码的时候遇到这样的问题: error C2664: “FindFirstFileW”: 不能将参数 1 从“char [261]”转换为“LPCWSTR”。
这个代码是读入一个文件夹里面所有的图片的文件名。因为在TLD,CT算法里面都是会遇到的。会遇到这样的错误。
解决的方式是:选中项目属性——>配置属性——>常规——>字符集,就字符集选为“使用多字节字符集"即可编译通过。
调试-选项和设置--勾上启用源服务器支持;调试-符号-勾微软符号服务器
发现好像拷别人工程里面的cpp和h文件过来有大问题,在网上查了半天,原来是因为编译的时候在调试信息中保存的源文件路径和你的安装路径不一致(也不太可能一致)。确认你的VS源文件路径就可以了。然后看到它原来的路径(显示的字体是灰色的)为f:\dd\vctools\crt\crtw32\string\i386\strcat.asm,很明显这是原作者配置的,后来重新加载,找到了在E:\Software\computer\Visual Studio\VC\crt\src\intel 里面
(PS:这是在单步调试main函数那里前面几句就出现的错误。最开始还不知道要用单步调试的时候,是直接在release下调试的,结果编译都是对的,但是工程整个会出现以下的错误0x00983488 处有未经处理的异常(在 CompressiveTracking.exe 中): 0xC0000005: 读取位置 0x00000000 时发生访问冲突 )
void readConfig(char* configFileName, char* imgFilePath, Rect &box)
{
int x;
int y;
int w;
int h;
fstream f;
char cstring[1000];
int readS=0;
f.open(configFileName, fstream::in);
char param1[200]; strcpy(param1,"");
char param2[200]; strcpy(param2,"");
char param3[200]; strcpy(param3,"");
f.getline(cstring, sizeof(cstring));
readS=sscanf (cstring, "%s %s %s", param1,param2, param3);
strcpy(imgFilePath,param3);
f.getline(cstring, sizeof(cstring));
f.getline(cstring, sizeof(cstring));
f.getline(cstring, sizeof(cstring));
readS=sscanf (cstring, "%s %s %i %i %i %i", param1,param2, &x, &y, &w, &h);
box = Rect(x, y, w, h);
}
而那个config文件是这样的
directory = .\data
%bb = x y width height the following is for david sequence
bb = 73,126,29,23
想了想,最开始的bb是73 126 29 23的形式,我是烤了benchmark的anno里面的信息过来有逗号,然后把逗号去了,就好了box{x=73 y=126 width=29 ...}
(5)想了想,最开始还出现了未申明的标识符MAX_PATH、WIN32_FIND_DATA、FindFirstFile这样的错误,那个MAX_PATH我是查了一下,改成了_MAX_PATH,后面的感觉是有库没有引用,在搜到FindFirstFile的百度百科的时候,找到了一个这样的例子,感觉是少了windows.h,include了一下,就好了
#include<stdio.h>
#include<windows.h>
intmain()
{
WIN32_FIND_DATAp;
HANDLEh=FindFirstFile("e:\\test\\*.c",&p);
puts(p.cFileName);
while(FindNextFile(h,&p))
puts(p.cFileName);
return0;
}
看到网上说要得到exe能在别的计算机上面运行,需要 项目属性-配置属性-常规-MFC的使用-在静态库中使用MFC
项目属性-配置属性-C/C++-代码生成-运行库-MTD/MT (注意!!!!debug必须是MTD,带有D,而用release时,是MT 错乱会出现这个错误Unhandled exception at 0x7476C41F in CompressiveTracking.exe: Microsoft C++ exception: cv::Exception at memory location 0x0041BD40.)
然后在http://www.microsoft.com/zh-cn/download/details.aspx?id=40770上面下载了一个vc_mbcsmfc.exe安装。
0 0
- Compressive Tracking C++ 代码Visual Studio2013 调试错误大全
- 压缩跟踪Compressive Tracking之matlab代码
- Visual Studio2013常用快捷键大全
- visual tracking代码测试
- Visual Studio2013统计代码行数
- zhanglei 的Real-time Compressive Tracking的CT_C++_sq_v1代码
- Real-Time Compressive Tracking论文代码详细注释
- 压缩跟踪Compressive Tracking
- Real-Time Compressive Tracking
- 压缩跟踪Compressive Tracking
- Real-time Compressive Tracking
- 压缩跟踪Compressive Tracking
- Real-time Compressive Tracking
- 压缩跟踪Compressive Tracking
- 压缩跟踪Compressive Tracking
- 压缩跟踪Compressive Tracking
- 压缩跟踪Compressive Tracking
- Compressive Tracking(CT)
- 欢迎使用CSDN-markdown编辑器
- 3.linux系统下的基本数据类型
- javascript多线程
- Neo4j集群环境搭建
- QListWidget自动具有滚动条 并实现滚动功能
- Compressive Tracking C++ 代码Visual Studio2013 调试错误大全
- 猜年龄
- 版本控制-搭建git服务器
- CSS3的过渡、动画、转换
- 【最短路】poj1125 Floyd
- poj解题报告——1050
- RedHat Enterprise Linux 6.4使用Centos 6 的yum源
- jQuery EasyUI 在datagrid上使用combotree 进行多选
- Android仿微信(二)——仿微信联系人 首字母分类