osx使用cmake编译opencv错误记录

一个比较诡异的编译错误

In file included from /Users/gerrie/source/offical/opencv-2.4.11/3rdparty/openexr/IlmImf/ImfPreviewImage.cpp:43:

/Users/gerrie/source/offical/opencv-2.4.11/3rdparty/openexr/IlmImf/ImfCheckedArithmetic.h:66:5: error: implicit instantiation of undefined template 
‘Imf::StaticAssertionFailed’ 
IMF_STATIC_ASSERT (!std::numeric_limits::is_signed && 
^

google不到相同的错误.看了下源码里是这样的:

/Users/gerrie/source/offical/opencv-2.4.11/modules/highgui/src/cap_ffmpeg_impl.hpp

template <bool b> struct StaticAssertionFailed{};
template <> struct StaticAssertionFailed <true>;
//template <> struct StaticAssertionFailed <true> {};

#define IMF_STATIC_ASSERT(x) \
    do {StaticAssertionFailed <x> staticAssertionFailed;} while (false)

原因是第二行编译器没有识别模板定义,osx编译器和linux有差异. 
template <> struct StaticAssertionFailed {} 
这样改就可以了.

——————-issue 2———————————

issue:

error: “libswscale is necessary to build the newer OpenCV ffmpeg wrapper”

解决: 
brew info ffmpeg 查看安装信息 
其实我是安装过的. 
在 /usr/local/lib 可以找到相关库. 
所以 
/Volumes/more/source/offical/opencv-2.4.11/modules/highgui/src/cap_ffmpeg_impl.hpp

//@wei #ifdef WIN32
  #define HAVE_FFMPEG_SWSCALE 1
  #include <libavcodec/avcodec.h>
  #include <libswscale/swscale.h>
#else

修改为

//@wei #ifdef WIN32
#if 1
  #define HAVE_FFMPEG_SWSCALE 1
  #include <libavcodec/avcodec.h>
  #include <libswscale/swscale.h>
#else
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值