opencv -- 莫名其妙的编译错误

今天在集成opencv的时候,遇到一个编译错误,还是挺典型的,这里简单记录一下。

集成开源库的时候经常会碰到因头文件引用而导致的错误。C++中秩序严明啊。

错误如下

fatal error C1189: #error : "No Target Architecture"

错误原因是windows.h (或者mfc头文件)和windef.h头文件包含顺序的问题,windef.h需要放在后面引入。错误原因没有分析,这里先暂时记录;

另外一个错误更神奇。

d:\opencv\opencv\build\include\opencv2\flann\any.h(70): error C2061: 语法错误: 标识符“dest”

d:\opencv\opencv\build\include\opencv2\flann\any.h(69): 编译类 模板 成员函数“void cvflann::anyimpl::small_any_policy<T>::copy_from_value(const void *,void **)”时

with

[

    T=const char *

]
 d:\opencv\opencv\build\include\opencv2\flann\any.h(157): 參见对正在编译的类 模板 实例化“cvflann::anyimpl::small_any_policy<T>”的引用
with
[
    T=const char *

扫描二维码关注公众号,回复: 3200168 查看本文章

]
d:\opencv\opencv\build\include\opencv2\flann\any.h(217): 參见对正在编译的函数 模板 实例化“cvflann::anyimpl::base_any_policy *cvflann::anyimpl::get_policy<T>(void)”的引用
with
[
    T=const char *
]
d:\opencv\opencv\build\include\opencv2\flann\any.h(187): 參见对正在编译的函数 模板 实例化“cvflann::any &cvflann::any::assign<const char*>(const T &)”的引用
with
[
    T=const char *
]

貌似是一个模板类型的错误,但是实际是因为第一次编译,记住是第一次编译,头文件引用放在预编译指令的后面

#ifdef _DEBUG
           #define new DEBUG_NEW
           #endif 

然后把头文件放到前面,就可以编译通过了,更神器的是,编译成功后再挪下来,也可以编译成功了。所以这个应该和第一次编译或者编译缓存有关系 ?这个暂时记录一下,以后有时间研究,哈哈,估计以后没时间了。

 

猜你喜欢

转载自blog.csdn.net/moyebaobei1/article/details/81735155