gpt4 book ai didi

c++ - 多个文件使用的头文件中的结构声明导致架构 x86_64 的重复符号

转载 作者:太空狗 更新时间:2023-10-29 20:22:11 26 4
gpt4 key购买 nike

<分区>

即使我在我的所有头文件中都包含了头文件保护,当我创建一个头文件 PointXYZRGBAI.h 并将其包含在 LidarFile.cpp 和 core.cpp 中时,也会生成一个错误

duplicate symbol _EIGEN_ALIGN_16 in:
CMakeFiles/core.dir/core.cpp.o
CMakeFiles/core.dir/LidarFile.cpp.o
ld: 1 duplicate symbol for architecture x86_64

错误似乎在提示标题是

#define PCL_NO_PRECOMPILE

#ifndef POINTXYZRGBAI_H
#define POINTXYZRGBAI_H
#endif

#include <pcl/point_types.h>

struct PointXYZRGBAI{
PCL_ADD_POINT4D;
union{
struct{
float intensity;
uint32_t rgba;
};
float data_c[4];
};
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
} EIGEN_ALIGN_16;

POINT_CLOUD_REGISTER_POINT_STRUCT(PointXYZRGBAI,
(float, x, x)
(float, y, y)
(float, z, z)
(float, intensity, intensity)
(uint32_t, rgba, rgba)
)

inline std::ostream& operator << (std::ostream& os, const PointXYZRGBAI& p){
os << "(" << p.x << ", " << p.y << ", " << p.z << " - " << p.intensity << " - " << p.rgba << ")";
return (os);
}

并且我在 header 定义的结构中使用 EIGEN_ALIGN_16 进行内存对齐。如果标题保护应防止多重包含,为什么 EIGEN_ALIGN_16 是重复符号?感谢您的澄清。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com