vs2015编译dlib-19.19+cuda9.0+cudnn

本文用于记录在win10环境下dlib的配置,我的配置环境为:vs2015 + dlib19.19 + cuda9.0 + cudnn + cmake

先提供下载地址:
dlib下载地址
在这里插入图片描述

cuda下载地址
在这里插入图片描述

cudnn根据cuda版本下载 cudnn下载地址

1.首先安装下载好的cuda.exe
2.解压cudnn,比如解压到d盘根目录,解压出来的路径为d:\cuda,里面包含lib,bin,include三个子文件夹。
3.将cudnn添加到环境变量path中去(d:\cuda\lib,d:\cuda\dll,d:\cuda\include),否则cmake会提示找不到cudnn,如图:在这里插入图片描述
4. 解压dlib,比如解压到桌面为dlib-19.19,在dlib-19.19根目录新建build文件夹用于存放vs的文件,然后打开cmake,填写如图:在这里插入图片描述

默认为32位,如果要生成64位可以在Optional platform下拉框中选择,点击Finish关闭页面,然后点击Configue,生成如图:
在这里插入图片描述
如果cmake下方提示"DLIB WILL USE CUDA"则表示成功了,如果想用cuda则勾选,不想用则取消勾选。

另外:如果编译器用的vs2017则很有可能会出现错误提示:

*** c:\program files\nvidia gpu computing toolkit\cuda\v9.2\include\crt/host_config.h(133): fatal error C1189: #error: – unsupported Microsoft Visual Studio version! Only the versions 2012, 2013, 2015 and 2017 are supported! [F:\Program Files(x86)\Anaconda\dlib-19.14.0\build\temp.win-amd64-3.7\Release\dlib_build\cuda_test_build\cuda_test.vcxproj]
*** CUSTOMBUILD : nvcc warning : The -std=c++11 flag is not supported with the configured host compiler. Flag will be ignored. [F:\Program Files(x86)\Anaconda\dlib-19.14.0\build\temp.win-amd64-3.7\Release\dlib_build\cuda_test_build\cuda_test.vcxproj]

解决办法:http://blog.zhazhafang.cn/?p=177
并且cuda最好用9.1以上版本。

5.最后用vs2015打开build/dlib.sln进行编译就成功了。

我遇到的问题:因为我调用dlib的地方是另一个自己写的动态库,运行库方式用的是多线程MT,所以我的dlib也采用MT方式编译,但当我把dlib添加到动态库中编译时却提示:

1>dlib19.19.0_release_64bit_msvc1900.lib(dlib_generated_cusolver_dlibapi.cu.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MD_DynamicRelease”不匹配值“MT_StaticRelease”(classifyAlgorithmGPU.obj 中)
1>dlib19.19.0_release_64bit_msvc1900.lib(dlib_generated_cuda_dlib.cu.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MD_DynamicRelease”不匹配值“MT_StaticRelease”(classifyAlgorithmGPU.obj 中)
1>  正在创建库 D:\work2\FS_5.6.0\x64\Release\faceAlgorithmGPU.lib 和对象 D:\work2\FS_5.6.0\x64\Release\faceAlgorithmGPU.exp
1>LINK : warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
1>dlib19.19.0_release_64bit_msvc1900.lib(dlib_generated_cusolver_dlibapi.cu.obj) : error LNK2001: 无法解析的外部符号 __imp_fminf
1>dlib19.19.0_release_64bit_msvc1900.lib(dlib_generated_cuda_dlib.cu.obj) : error LNK2001: 无法解析的外部符号 __imp_fminf
1>dlib19.19.0_release_64bit_msvc1900.lib(dlib_generated_cusolver_dlibapi.cu.obj) : error LNK2001: 无法解析的外部符号 __imp_fmaxf
1>dlib19.19.0_release_64bit_msvc1900.lib(dlib_generated_cuda_dlib.cu.obj) : error LNK2001: 无法解析的外部符号 __imp_fmaxf
1>dlib19.19.0_release_64bit_msvc1900.lib(dlib_generated_cusolver_dlibapi.cu.obj) : error LNK2001: 无法解析的外部符号 __imp_exp2f
1>dlib19.19.0_release_64bit_msvc1900.lib(dlib_generated_cuda_dlib.cu.obj) : error LNK2001: 无法解析的外部符号 __imp_exp2f

然后我重新用cmake取消DLIB_USE_CUDA选项来编译dlib,就不会有这个问题,因此我猜想可能是引用的cudnn或cuda采用的是MD形式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值