Qt CUDA混合编程BUG(二)

发布时间 2023-08-10 15:46:42作者: 一杯清酒邀明月

问题描述(一)

  QT引用外部库,debug、release均编译通过,但是运行程序时失败,报错提示为:程序异常结束,The process was ended forcefully.

21:44:21: 程序异常结束。
21:44:21: The process was ended forcefully.

原因分析:

  调用外部的dll文件失败,因此要将对应的dll添加进debug文件夹中。

解决方案:

  如何找到对应的调用失败的dll文件,在QT运行代码后会bulid相应的文件,在该bulid文件夹下,找到debug文件夹,在其中找到项目生成的exe文件,直接点击运行,根据提示找的缺少的dll,将其复制到debug文件夹下即可。

问题描述(二)

  解决问题以后,运行代码依旧异常结束,但是运行exe文件时不提示缺少dll

21:44:21: 程序异常结束。
21:44:21: The process was ended forcefully.

原因分析:

  在.pro中配置存在小问题,这种问题只能大家根据自己代码的情况一点点排查,我的问题是重复添加了ucrt这个库文件。

 1 CUDA_LIB_NAMES += cublas \
 2 cuda \
 3 ucrt\
 4 odbccp32 \
 5 MSVCRT \
 6 
 7 # debug and release need different ucrt lib
 8 CONFIG(debug, debug|release) {
 9 CUDA_LIB_NAMES += ucrtd \
10 }
11 else{
12 CUDA_LIB_NAMES += ucrt \
13 }

解决方案:

  由于在debug时使用的是ucrtd文件,但是ucrt被我之前加入到LIBS中了,因此将前面的ucrt\删除即可