OpenCV ARDrone编译问题

时间:2011-08-24 21:10:15

标签: c++ visual-studio-2008 opencv

长话短说,我在我修改的ARDrone Win32客户端版本1.5(目前不是最新版本)中包含了OpenCV版本2.3.1(目前最新版本),并且自从与这两个版本结合以来一直在努力。我正在使用Microsoft Visual Studio 2008(完整版)。

首先,我在Win32客户端中使用最多的文件是“video_stage.c”;我正在使用视频操作等,因此OpenCV。为了在video_stage.c中获得OpenCV的全部功能,我需要将video_stage.c更改为C ++文件(如果我错了,请纠正我)。

所以我已经完成了必要的代码更改,使video_stage.c编译为C ++文件。但是,我仍然遇到一个我无法完全理解的错误:

  

... \ include \ opencv2 \ core \ mat.hpp(115):错误C3861:'_InterlockedExchangeAdd':找不到标识符

在305,377,381,2064,2092和2096行发生此错误多次。

编辑:有人指出“_InterlockedExchangeAdd”用于operations.hhp:

#define CV_XADD(addr,delta) _InterlockedExchangeAdd((long volatile*)(addr), (delta))

在mat.hpp中多次引用CV_XADD,导致很长的错误列表。这段代码有什么问题?

1 个答案:

答案 0 :(得分:1)

事实证明,ARDrone包含了自己的“intrin.h”副本,这个头文件通常包含_InterlockedExchangeAdd。由于我不知道的某些原因,Microsoft Visual C ++优先于原始版本的新副本,由于某些原因我再次不知道,ARDrone的版本不包含_InterlockedExchangeAdd或任何类似的功能。