【Halcon联合C++】C++ String、char*、CString路径格式转化为HTuple

之前在网上搜了很多攻略,一直没有找到合适的方法,感谢halcon学习网中大神的启发:http://www.ihalcon.com/read-1562.html
下面进行一点总结,留给有需要的人,也给自己备用。

问题描述

通过C++读取路径并保存为string格式,先将这个string作为参数传给Halcon的导出函数——ReadImage(),第二个参数出现如下几种问题:
1、string到HTuple没有适当的转换函数,即halcon没有string做参数的构造函数;
2、通过char* temp变量,用(HTuple)(temp)显示<无可用信息,未为 halconcpp.dll 加载任何符号>
给函数传值一直传不过去,无法正常读取图片。

解决方法

问题的关键不是<无可用信息,未为 halconcpp.dll 加载任何符号>!!!
问题的关键不是<无可用信息,未为 halconcpp.dll 加载任何符号>!!!
问题的关键不是<无可用信息,未为 halconcpp.dll 加载任何符号>!!!
关键在于读取HTuple字符串的方法!!!
以下提供了几种转换方法,亲测通过

	string temp = “D:\\1.jpg”;
	
	// char* 类型转HTuple
	const char* ctemp = temp.c_str();
	HTuple h_c_temp(ctemp);
	// 检查是否已转化
	string stemp = h_c_temp.S();
	CString visiualTemp = h_c_temp.S();
	
	// temp 是string类型的,string类型转HTuple
	HTuple htemp(temp.c_str());
	// 检查是否已转化
	visiualTemp = htemp.S();
	// cstring类型转HTuple
	Cstring cstr_temp = tmep.c_str();
	HTuple h_cstr_temp(cstr_temp.GetBuffer());
	// 检查是否已转化
	visiualTemp  = h_cstr_temp.S();

所以,ReadImage()中的第二个参数应该要HTuple类型变量htuple的S成员函数

ReadImage(&ho_Image, h_temp.S());
只要调用成员函数对了,string、char*或CString都无所谓,如果没有调用HTuple的S()成员函数,就会出现之前的问题!!!
两天两夜,总算解决了。

发布了96 篇原创文章 · 获赞 19 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Thera_qing/article/details/102565706