zoukankan      html  css  js  c++  java
  • 经典环境(2)OpenCV412+OpenCV-Contrib +vs2015+cuda10.1编译

    自己整理的3.49教程,一样的

    https://www.cnblogs.com/kekeoutlook/p/13111481.html

    过程一样

    网友的

    https://blog.csdn.net/Gordon_Wei/article/details/85775328?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

    两大报错

    1 cmake阶段 ffmpeg和sift的库没能下载下来,自己根据cmaedownload记录手动去网址下载,完了直接放在指定文件夹。

    需要某飞机,付费吧 一个月5元

    2 WIN10 sdk老版本问题报错 

    我在编译opencv349 开始就要更新win10 sdk,那个生成的工程VS直接用了最新的,但是opencv4的vs工程却还是老版本,所以需要额外手动更换下。

    (报错输出)

    eoio_main.cpp
    76>F:dongdongtool
    avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(804): error C2065: “ID3D11Multithread”: 未声明的标识符
    76>F:dongdongtool
    avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(804): error C2923: “`anonymous-namespace'::ComPtr”: 对于参数“T”,“ID3D11Multithread”不是有效的 模板 类型变量
    76>F:dongdongtool
    avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(804): error C2133: “D3DDevMT”: 未知的大小
    76>F:dongdongtool
    avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(804): error C2512: “`anonymous-namespace'::ComPtr”: 没有合适的默认构造函数可用
    76>  F:dongdongtool
    avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(127): note: 参见“`anonymous-namespace'::ComPtr”的声明
    76>F:dongdongtool
    avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(806): error C2100: 非法的间接寻址
    76>F:dongdongtool
    avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(806): error C2672: “IID_PPV_ARGS_Helper”: 未找到匹配的重载函数
    76>F:dongdongtool
    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:dongdongtool
    avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(806): error C2660: “IUnknown::QueryInterface”: 函数不接受 1 个参数
    76>F:dongdongtool
    avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(808): error C2678: 二进制“->”: 没有找到接受“`anonymous-namespace'::ComPtr”类型的左操作数的运算符(或没有可接受的转换)
    76>  F:dongdongtool
    avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(149): note: 可能是“T *`anonymous-namespace'::ComPtr<T>::operator ->(void) const”
    76>  F:dongdongtool
    avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(808): note: 尝试匹配参数列表“(`anonymous-namespace'::ComPtr)”时
    76>F:dongdongtool
    avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(808): error C2039: “SetMultithreadProtected”: 不是“`anonymous-namespace'::ComPtr”的成员
    76>  F:dongdongtool
    avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(127): note: 参见“`anonymous-namespace'::ComPtr”的声明
    76>F:dongdongtool
    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:dongdongtool
    avidia_cuda_opencvOPENCVopencv412_contrib_cuda10opencv412_cuda10_contrib_siftopencv412modulesvideoiosrccap_msmf.cpp(809): note: 原因如下: 无法从“`anonymous-namespace'::ComPtr”转换为“`anonymous-namespace'::ComPtr<T>”
    76>  F:dongdongtool
    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工程

     

    就可以到生成库 

     

  • 相关阅读:
    【配置属性】—Entity Framework 对应表字段的类型的设定配置方法
    EntityFrame Work 6 Code First 配置字段为varchar 类型
    Echarts xAxis boundaryGap
    JavaScript Array和string的转换
    SQL server :主键和外键
    SQL server :“增删改查” 之 “改”
    SQL server :“增删改查” 之 “删”
    SQL server :“增删改查” 之 “增”
    Oracle不能连接故障排除【TNS-12541:TNS:无监听程序】
    LNMP平台部署及应用
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/13138867.html
Copyright © 2011-2022 走看看