填坑别人代码

本文记录了在接续他人代码时遇到的几个技术问题及解决方案,包括:修复wsprintfW函数的类型转换错误,解决Eigen库中使用括号操作符的C2338错误,以及处理LNK2019外部符号链接错误。这些问题涉及到宏定义、类型匹配和库导出的配置。
摘要由CSDN通过智能技术生成

接别人的代码,给别人代码填坑,做个记录。。。

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值