x64环境下_findnext()函数报错——0xC0000005: 写入位置 0xFFFFFFFFDF47C5A0 时发生访问冲突

博主在进行单目相机位姿估计时,参考特定代码进行相机标定,运行时出现报错。报错为写入位置 0x000000000BE2A940 时发生访问冲突,在 x64 环境下,句柄需用 _int64 定义而非 long,修改后问题解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在搞单目相机位姿估计,相机标定参考了【OpenCV3学习笔记 】相机标定函数 calibrateCamera( ) 使用详解(附相机标定程序和数据)提供的代码。

/*
@param File_Directory 为文件夹目录
@param FileType 为需要查找的文件类型
@param FilesName 为存放文件名的容器
*/
void getFilesName(string &File_Directory, string &FileType, vector<string>&FilesName)
{
	string buffer = File_Directory + "\\*" + FileType;

	_finddata_t c_file;   // 存放文件名的结构体

	long hFile;
	hFile = _findfirst(buffer.c_str(), &c_file);   //找第一个文件命

	if (hFile == -1L)   // 检查文件夹目录下存在需要查找的文件
		printf("No %s files in current directory!\n", FileType);
	else
	{
		string fullFilePath;
		do
		{
			fullFilePath.clear();

			//名字
			fullFilePath = File_Directory + "\\" + c_file.name;

			FilesName.push_back(fullFilePath);

		} while (_findnext(hFile, &c_file) == 0);  //如果找到下个文件的名字成功的话就返回0,否则返回-1  
		_findclose(hFile);
	}
}

运行到

while (_findnext(hFile, &c_file) == 0);

 时报错,参考_findnext()报错写入位置 0x000000000BE2A940 时发生访问冲突。x64环境下,句柄也在变化,要用_int64 定义句柄,而不是long。因此修改

//long hFile;
_int64 hFile;

问题解决 

 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值