调整版本为Release x64(关键)并配置好CUDA和CUDNN。
注意:Release | x64是基类主配置,包含目录下有编译器的一些链接库
以及一些库目录:
以及附加依赖项:
msvcprt.lib
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
comdlg32.lib
advapi32.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
odbc32.lib
odbccp32.lib
那么我的建议是直接把这些对应的dll都找到然后放到release文件下,不然每次一出错就需要配置很多环境。
-Microsoft.Cpp.x64.user是基类分配置
但是两者都是全局配置,修改会直接修改VS17/19/22的配置,所以建议不要用全局配置来配置环境,容易环境混乱
包含目录:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\include
D:\deeplearningpakage\opencv-4.8.1-vc16\build\include
D:\deeplearningpakage\opencv-4.8.1-vc16\build\include\opencv2
D:\deeplearningpakage\onnxruntime-win-x64-gpu-1.14.1\include
库目录:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\lib\x64
D:\deeplearningpakage\opencv-4.8.1-vc16\build\x64\vc16\lib
D:\deeplearningpakage\onnxruntime-win-x64-gpu-1.14.1\lib
附加依赖项:
cublas.lib
cublasLt.lib
cuda.lib
cudadevrt.lib
cudart.lib
cudart_static.lib
cudnn.lib
cudnn64_8.lib
cudnn_adv_infer.lib
cudnn_adv_infer64_8.lib
cudnn_adv_train.lib
cudnn_adv_train64_8.lib
cudnn_cnn_infer.lib
cudnn_cnn_infer64_8.lib
cudnn_cnn_train.lib
cudnn_cnn_train64_8.lib
cudnn_ops_infer.lib
cudnn_ops_infer64_8.lib
cudnn_ops_train.lib
cudnn_ops_train64_8.lib
cufft.lib
cufftw.lib
cufilt.lib
curand.lib
cusolver.lib
cusolverMg.lib
cusparse.lib
nppc.lib
nppial.lib
nppicc.lib
nppidei.lib
nppif.lib
nppig.lib
nppim.lib
nppist.lib
nppisu.lib
nppitc.lib
npps.lib
nvblas.lib
nvjpeg.lib
nvml.lib
nvptxcompiler_static.lib
nvrtc-builtins_static.lib
nvrtc.lib
nvrtc_static.lib
OpenCL.lib
opencv_world481.lib
onnxruntime.lib
onnxruntime_providers_cuda.lib
onnxruntime_providers_shared.lib
onnxruntime_providers_tensorrt.lib
Release生成exe成功
运行程序报错:
加入dll到exe所属目录下(特别注意exe生成地址)
问题点:
1>LINK : fatal error LNK1104: 无法打开文件“msvcprt.lib”
解答:类似这种系统的安装包出错了,直接重新建一个解决方案,将代码拷贝到新解决方案中。系统会自己纠正内部环境问题。
2、报错0x00007FF8A368CF19 处(位于 onnx模型落地归纳.exe 中)有未经处理的异常: Microsoft C++ 异常: Ort::Exception,位于内存位置 0x000000000014FBF0 处。
解答:这个错误是模型出了问题。检查一下模型的input数据,和output是不是fp32精度的。Int64的输出onnx不支持。