【发布时间】:2016-12-31 18:06:50
【问题描述】:
我已经在我的 MacBook 上使用自制软件安装了 PCL。我还有一些要编译的代码,我已经为其创建了一个 CMakeLists.txt 文件。但是,我收到一些关于 boost 库的错误。
我得到错误:
/usr/local/include/boost/random/detail/polynomial.hpp:267:13: error: use of
undeclared identifier 'sqr'; did you mean 'sqrt'?
sqr(out, n);
当我查看文件 polynomial.hpp 时,我可以看到以下函数:
static digit_t sqr(digit_t val) {
const std::size_t bits = std::numeric_limits<digit_t>::digits;
digit_t mask = (digit_t(1) << bits/2) - 1;
for(std::size_t i = bits; i > 1; i /= 2) {
val = ((val & ~mask) << i/2) | (val & mask);
mask = mask & (mask >> i/4);
mask = mask | (mask << i/2);
}
return val;
}
static void sqr(digit_t * val, std::size_t size)
{
const std::size_t bits = std::numeric_limits<digit_t>::digits;
digit_t mask = (digit_t(1) << bits/2) - 1;
for(std::size_t i = 0; i < size; ++i) {
digit_t x = val[size - i - 1];
val[(size - i - 1) * 2] = sqr(x & mask);
val[(size - i - 1) * 2 + 1] = sqr(x >> bits/2);
}
}
在导致问题的函数调用上方声明。
由于这些函数似乎存在,而且是 Boost 库中的代码导致了问题,我有点不确定如何继续。
我在 Linux 上没有遇到过这些问题,尽管那是针对 PCL 1.7 而这是 PCL 1.8。
/埃里克
【问题讨论】:
标签: macos boost point-cloud-library