接别人的代码,给别人代码填坑,做个记录。。。
1. error C2664: “wsprintfW”: 不能将参数 1 从“char [32]”转换为“LPWSTR”
解决办法:
add_definitions(-DUNICODE)
2. C2338 THE_BRACKET_OPERATOR_IS_ONLY_FOR_VECTORS__USE_THE_PARENTHESIS_OPERATOR_INSTEAD
最后发现是因为以下代码:
R_oula = ypr2R(Eigen::Vector3d{yaw * 180.0 / M_PI, pitch * 180.0 / M_PI, roll * 180.0 / M_PI });
改正成以下代码就可以
R_oula = ypr2R(Eigen::Vector3d(yaw * 180.0 / M_PI, pitch * 180.0 / M_PI, roll * 180.0 / M_PI ));
看博客也有可能是因为使用了[]导致了,也记录下。
vs2017 C++ C2338错误 eigen库_yogurt_的博客-CSDN博客
2023/2/23更新:
发现如果矩阵大小使用错误也会报2问题:
Eigen::Vector3d cur_acceration_;
Eigen::Matrix3d imu_to_odom;
Eigen::Matrix3d temp_cur_acceration_ = imu_to_odom * cur_acceration_;
temp_cur_acceration_ 应为Eigen::Vector3d类型才对
2023/2/24
3. error LNK2019: 无法解析的外部符号 "__declspec(dllimport) XXX::`vftable'"
原因:库输出的地方包含输出库的宏定义
#ifdef LLOCALBPEARL_EXPORTS
#define BPEARL_ADAPTER_API _declspec(dllexport)
#else
#define BPEARL_ADAPTER_API _declspec(dllimport)
#endif
所以要在cmake里添加预定义:
add_definitions(-DLLOCALBPEARL_EXPORTS)
但实际写的是。。。
add_definitions(-DDLLOCALBPEARL_EXPORTS)