长话短说,我在我修改的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,导致很长的错误列表。这段代码有什么问题?
答案 0 :(得分:1)
事实证明,ARDrone包含了自己的“intrin.h”副本,这个头文件通常包含_InterlockedExchangeAdd。由于我不知道的某些原因,Microsoft Visual C ++优先于原始版本的新副本,由于某些原因我再次不知道,ARDrone的版本不包含_InterlockedExchangeAdd或任何类似的功能。