5

我在我的项目中使用 zxing 和 OpenCV 库。我今天将我的 XCode 从 4.5 更新到 4.6,我收到了这个错误。

externalLibs/boost/include/boost/gil/channel_algorithm.hpp:54:85:非类型模板参数计算为-1,不能缩小为“unsigned long long”类型

这个错误出现在 OpenCV 库类之一中的这一行代码上:-

struct unsigned_integral_max_value : public mpl::
integral_c< UnsignedIntegralChannel,-1> {};

在早期版本的 Xcode 上,它工作正常。

提前致谢。

4

3 回答 3

1

似乎 boost 不喜欢新的 clang 编译器添加的 c++ 11 支持

所以..它说在构建设置中禁用c ++ 11支持 在此处输入图像描述

= src:见https://svn.boost.org/trac/boost/ticket/7270

于 2013-01-29T13:06:56.797 回答
0

unsigned long long 变量的最大值为十六进制0xFFFFFFFF FFFFFFFF,即所有位均为1。如果解释为有符号数,则对应于 -1。所以程序员经常使用 -1 来代替,希望编译器不会抱怨。显然,这在 XCode 4.5 中没有发生,但 4.6 做了更严格的检查......

于 2013-01-29T13:16:50.393 回答
0

在 macOS Sierra 上使用Apple LLVM version 8.1.0 (clang-802.0.42)和编译时遇到了同样的错误-std=c++11。为了解决这个问题,我包含了以下编译器标志:-Wno-error=c++11-narrowing

于 2017-05-18T22:10:05.173 回答