D:\ZBY\CodeBase\eigen-3.4.0\Eigen\src\Core\MathFunctions.h:389: error: conflicting declaration of C function 'long long int std::abs(long long int)' EIGEN_USING_STD(abs); ^
时间: 2024-01-24 07:18:37 浏览: 17
这个错误是因为在你的代码中调用了标准库函数 `abs`,但是 Eigen 库中也定义了一个同名函数,导致冲突。解决方法有两个:
1. 使用 `std::abs` 而不是直接调用 `abs` 函数,这样可以明确使用标准库中的函数。
2. 在包含 Eigen 头文件之前,加入宏定义 `#define EIGEN_DONT_ALIGN_STATICALLY`,这样可以禁用 Eigen 中的一些静态对齐优化,避免与标准库冲突。
你可以根据具体情况选择其中一种方法进行修改。
相关问题
D:\ZBY\CodeBase\eigen-3.4.0\Eigen\src\LU\FullPivLU.h:332: error: conflicting declaration of C function 'long long int std::abs(long long int)' using std::abs; ^
这个错误是因为在 FullPivLU.h 文件中使用了 `using std::abs`,而 `std::abs` 与 C 语言的 `abs` 函数重名了,导致冲突。解决这个问题的方法是使用命名空间 `std::` 来明确使用 C++ 标准库中的 `abs` 函数,而不是使用 `using` 语句。你可以在 FullPivLU.h 文件中将 `using std::abs` 改为 `using namespace std;` 或者直接使用 `std::abs` 替代原来的 `abs`。
D:\ZBY\CodeBase\eigen-3.4.0\Eigen\src\SVD\BDCSVD.h:416: error: conflicting declaration of C function 'long long int std::abs(long long int)' using std::abs; ^
这个错误是因为在你的代码中使用了 `std::abs` 函数,而该函数已经被 `BDCSVD.h` 文件中的另一个声明所覆盖。解决方法有两种:
1. 使用 `std::fabs` 代替 `std::abs`。
2. 在 `#include` `BDCSVD.h` 之前加上 `#undef abs`,这样可以取消 `BDCSVD.h` 中对 `abs` 的定义。
阅读全文