自己整理的3.49教程,一样的
https://www.cnblogs.com/kekeoutlook/p/13111481.html
过程一样
网友的
两大报错
1 cmake阶段 ffmpeg和sift的库没能下载下来,自己根据cmaedownload记录手动去网址下载,完了直接放在指定文件夹。
需要某飞机,付费吧 一个月5元
2 WIN10 sdk老版本问题报错
我在编译opencv349 开始就要更新win10 sdk,那个生成的工程VS直接用了最新的,但是opencv4的vs工程却还是老版本,所以需要额外手动更换下。
(报错输出)
eoio_main.cpp 76>F:dongdong tool avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(804): error C2065: “ID3D11Multithread”: 未声明的标识符 76>F:dongdong tool avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(804): error C2923: “`anonymous-namespace'::ComPtr”: 对于参数“T”,“ID3D11Multithread”不是有效的 模板 类型变量 76>F:dongdong tool avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(804): error C2133: “D3DDevMT”: 未知的大小 76>F:dongdong tool avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(804): error C2512: “`anonymous-namespace'::ComPtr”: 没有合适的默认构造函数可用 76> F:dongdong tool avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(127): note: 参见“`anonymous-namespace'::ComPtr”的声明 76>F:dongdong tool avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(806): error C2100: 非法的间接寻址 76>F:dongdong tool avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(806): error C2672: “IID_PPV_ARGS_Helper”: 未找到匹配的重载函数 76>F:dongdong tool avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(806): error C2784: “void **IID_PPV_ARGS_Helper(T **)”: 未能从“`anonymous-namespace'::ComPtr *”为“T **”推导 模板 参数 76> C:Program Files (x86)Windows Kits10Include10.0.10586.0umcombaseapi.h(231): note: 参见“IID_PPV_ARGS_Helper”的声明 76>F:dongdong tool avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(806): error C2660: “IUnknown::QueryInterface”: 函数不接受 1 个参数 76>F:dongdong tool avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(808): error C2678: 二进制“->”: 没有找到接受“`anonymous-namespace'::ComPtr”类型的左操作数的运算符(或没有可接受的转换) 76> F:dongdong tool avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(149): note: 可能是“T *`anonymous-namespace'::ComPtr<T>::operator ->(void) const” 76> F:dongdong tool avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(808): note: 尝试匹配参数列表“(`anonymous-namespace'::ComPtr)”时 76>F:dongdong tool avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(808): error C2039: “SetMultithreadProtected”: 不是“`anonymous-namespace'::ComPtr”的成员 76> F:dongdong tool avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(127): note: 参见“`anonymous-namespace'::ComPtr”的声明 76>F:dongdong tool avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(809): error C2662: “void `anonymous-namespace'::ComPtr<T>::Release(void)”: 不能将“this”指针从“`anonymous-namespace'::ComPtr”转换为“`anonymous-namespace'::ComPtr<T> &” 76> F:dongdong tool avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(809): note: 原因如下: 无法从“`anonymous-namespace'::ComPtr”转换为“`anonymous-namespace'::ComPtr<T>” 76> F:dongdong tool avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(809): note: 转换要求第二个用户定义的转换运算符或构造函数
VS2015生成时 C2065 ‘ID3D11Multithread’: undeclared identifier 错误等; VS2015生成时 LNK1104 cannot open file '…libDebugopencv_world401d.lib’问题
只要发现了’ID3D11Multithread’: undeclared identifier 那么下边出现的一系列问题,包括LNK1104 cannot open file '…libDebugopencv_world401d.lib’等基本都是由它引起的。
我出现这个问题是由于 windows 10 SDK 版本低(10.0.10586.0版本),你可以在路径
C:Program Files (x86)Windows Kits10Include 下看到版本号
其中不包含所要用到的 ID3D11Multithread 。这时需要下载新版本的windows SDK(10.0.17134.0版本)
这里微软提供两种方法,
1.是下载安装win10的 windows 10 SDK
2.是通过VS进行安装 (VS2017 能够安装更高版本的 (10.0.17763.132))
下载地址:
https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk
下载后安装即可
这里需要注意,尽管有了新版本SDK,但是VS2015编译器默认还是使用了低版本,所以需要在VS中设置一下
首先,在 Class View(类视图) 窗口中(没有的在菜单 View(视图)中选择 Class View(类视图))选中所有的项目 (通过shift件 第一个和最后一个进行全选)
后再项目上右键,打开Properties (属性)对话框,修改Target Platform Version (目标平台版本) 选择10.0.17134.0。
到此就完成了错误的修改,全部重新生成解决方案
然后单独生成install工程
就可以到生成库