UUID: ubuntu/centos系统c++工程里使用uuid

UUID 是指Universally Unique Identifier,翻译为中文是通用唯一识别码,UUID 的目的是让分布式系统中的所有元素都能有唯一的识别信息。如此一来,每个人都可以创建不与其它人冲突的 UUID,就不需考虑数据库创建时的名称重复问题。

集成过程如下:
1、ubuntu系统安装uuid

sudo apt-get install  uuid-dev 

2、cmakelist.txt里,链接libuuid.so。不链接的话会报错libuuid.so.1:error adding symbols: DSO missing from command line。注意添加时,只保留uuid。如下:

target_link_libraries(main nvinfer ${OpenCV_LIBS} ${CUDA_LIBS} ${TORCH_LIBRARIES} nvonnxparser nvinfer_plugin yolov5_trt cudart yaml-cpp decodeplugin uuid)

3、工程中添加以下头文件

#ifndef _CREATE_UUID_H_
#define	_CREATE_UUID_H_

#include <string>
#ifdef WIN32
#include <objbase.h>
#else
#include <uuid/uuid.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
/* 系统的GUID结构体 */
typedef struct _GUID
{
	unsigned long Data1;
	unsigned short Data2;
	unsigned short Data3;
	unsigned char Data4[8];
}GUID;
#endif

inline std::string create_uuid()
{
	/* 创建GUID的系统接口 */
	GUID guid;
#ifdef WIN32
	CoCreateGuid(&guid);
#else
	uuid_generate(reinterpret_cast<unsigned char *>(&guid));
#endif

/* 定义GUID的字符格式 */
	std::string format;
	format = "%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X";
/* 输出定义的GUID字符 */
	char buf[64] = { 0 };
#ifdef __GNUC__
	snprintf(
#else
	_snprintf_s(
#endif
		buf,
		sizeof(buf),
		format.c_str(),
		guid.Data1, guid.Data2, guid.Data3,
		guid.Data4[0], guid.Data4[1],
		guid.Data4[2], guid.Data4[3],
		guid.Data4[4], guid.Data4[5],
		guid.Data4[6], guid.Data4[7]);

	return std::string(buf);
}
#endif	/* _CREATE_UUID_H_ */

4、工程里具体使用,即相应位置使用下面一句,生成得到uuid

string uuidstr= create_uuid();

补充:

centos系统安装uuid命令:

yum install e2fsprogs-devel
yum install uuid-devel
yum install libuuid-devel
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值