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