添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Visual Studio中编译.cu文件报错

问题1:C++ 未定义标识符 “clock64”

右键.cu文件选择 属性/Configuration Properties , 转到 CUDA C/C++ Device Code Generation ,然后检查它的设置:compute_X,sm_X (X数字的选择看 https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ )
在这里插入图片描述 像我的显卡是 RTX3060 ,所以我需要将 compute_52,sm_52 改成 compute_86,sm_86
在这里插入图片描述 然后右键你的项目,选择 属性/Configuration Properties , 转到 CUDA C/C++ Device Code Generation compute_52,sm_52 也要修改成 compute_86,sm_86
在这里插入图片描述 如果还是报错,尝试以下两种方式:

  1. 增加头文件 # include <time.h> 或者 sm_20_intrinsics.h
  2. clock64() 修改成 clock()

问题2:未定义标识符 “blockIdx”

  1. 增加头文件 #inlcude<device_launch_parameters_h>

  2. 修改.cu文件的配置属性,把项类型修改为 CUDA C/C++ (右键.cu文件,选择属性;其他缺少未定义标识符时,也要看一下这个改了没改)
    在这里插入图片描述 cite:
    https://blog.csdn.net/weixin_42478379/article/details/103656585

问题3:未定义标识符 “rsqrtf”

增加头文件 #include <math_functions.h>

问题4:C++ 未定义标识符 “tex2D”

同问题11

  1. 增加头文件 #include "cpu_anim.h" (cite: https://blog.csdn.net/xiao_lxl/article/details/52777670 ; 下载链接: https://github.com/tpoisot/CUDA-training/tree/master/utils/cuda_by_example/common ) - 我试过了,没用
  2. 还有说 tex2D 被弃用了,(cite: https://stackoverflow.com/questions/67193791/how-to-replace-the-deprecated-tex2dtexturet-2-cudareadmodeelementtype-floa

问题5: E0266 “ACCESS_MASK” 不明确

这个错误的原因是:opencv的using namespace cv和windows.h中ACCESS_MASK定义冲突
注:养成写代码不用using namespace …的习惯

  1. 去掉 using namespace cv ,用 cv:: 代替

问题6: E0035 #error 指令: – incorrect inclusion of a cudart header file

检查头文件的位置,一般写在 .h 文件中,然后在 .cpp 中只包含一个 .h 文件
#include <...> 尽量不要重复出现在多个文件中
然后用以下代码替换掉 #include <math_functions.h>

#define __CUDA_INTERNAL_COMPILATION__
#include "math_functions.h"
#undef __CUDA_INTERNAL_COMPILATION__

cite:
https://stackoverflow.com/questions/16035401/incorrect-inclusion-of-a-cudart-header-error-on-cuda
https://www.codenong.com/16035401/
https://blog.csdn.net/tiao_god/article/details/112463732

问题7: 未定义标识符 “CudaSafeCall”

make your own wrapper
自己写函数CudaSafeCall
cite:
https://forums.developer.nvidia.com/t/is-cudasafecall-no-longer-needed/27606
https://www.cnblogs.com/catnip/p/8630046.html
https://vimsky.com/examples/detail/cpp-ex-----CUDA_SAFE_CALL-function.html

问题8: E1097 未知特性 “no_init_all”

出现在winnt.h文件中
winnt.h加入#define no_init_all deprecated
在这里插入图片描述 cite:
https://www.coder.work/article/7473663
https://blog.csdn.net/weixin_44749766/article/details/90147106

问题9: 错误C4996 ‘fopen’:

报错:
‘fopen’: This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
解决办法:
https://blog.csdn.net/muzihuaner/article/details/109886974

_CRT_SECURE_NO_WARNINGS

问题10: 错误C2338 wrong character type for setfill

setfill("0") 改成setfill('0')

问题11:在核函数<<<处提示:应输入表达式(但是可以编译成功)

vs的报错并没有影响工程的顺利编译,这个错误可能仅仅是vs对cuda语法的识别问题,就像对cuda中 “ <<< >>> ” 的不识别一样。(cite: https://www.jianshu.com/p/ed486942647b
或:

  1. 加external “C” (我尝试了,没有用; cite:https://www.jianshu.com/p/7b40b7f846d7;https://blog.csdn.net/qq_35789421/article/details/117398582
  2. 全局变量问题: https://blog.csdn.net/xdearluo/article/details/84142677
  3. 代码错误问题:https://blog.csdn.net/xdearluo/article/details/84142677

参考链接:
4. https://www.codenong.com/11217117/
5. cuda出现“error:未识别的blockIdx”解决方案: https://blog.csdn.net/deyuzhi/article/details/44114717
6. error:“ACCESS_MASK”: 不明确的符号:https://blog.csdn.net/jiao_mrswang/article/details/100209833
7. vs+cuda的环境配置:https://blog.csdn.net/weixin_41336841/article/details/118313452
8. .cpp 调用CUDA的.cu中的函数:https://www.cnblogs.com/betterwgo/p/6843272.html

项目场景: 使用 Visual Studio 尝试在 VTM-6.0 的 VLCWriter.cpp 和 VLCReader.cpp 调用自定义函数,自定义函数的声明的定义均在自己写的文件 HomoTransform.h, HomoTransform.cpp 由于需在 VLCWriter.cpp 和 VLCReader.cpp @Override public void run() { bytes = mmInStream.read(buffer); mHandler.o
在vs自动生成的c++项目,初次使用cout或cin报未定义标识符错误,是由于声明命名空间的原因。 解决方法:在头文件声明全局命名空间。加入 using namespace std; 表示使用名为std的namespace的标识符。 近期请国内外头部出版社可尽快私信博主!——心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,谦虚,自律,反思,成长,还算是比较正能量的博主,公益免费传播……内心特别想在AI界做出一些可以推进历史进程影响力的东西(兴趣使然,有点小情怀,也有点使命感呀)… 12-11
c++代码时遇到了如下问题,声明string类的时候,提示“未定义标识符‘string’”,如图 添加了头文件#include &lt;string&gt;之后,仍然显示上述错误,网上搜索之后查到,还需要在头文件添加using namespace std; #include &lt;string&gt; using namespace std; 大功告成! 若想继续了解请往下看! name...
问题分析:已经声明过变量,依旧报错声明的标识符错误 (大家是不是很郁闷!!!),仔细观察两种情况的“=”,一个大一个小,对于小一点才是真正的变量复制(大一点“=”,很郁闷,不知道怎么输入进去的,改变了赋值性质) 解决办法:等于号由大变小(根据个人情况)。如下图所示: 【anaconda】解决libGL error问题:MESA-LOADER: failed to open iris、MESA-LOADER: failed to open swrast.... 2301_81245061: (base) zhangjingfei@zhangjingfei-G3-3590:~/桌面$ mkdir -p /usr/lib/dri mkdir: 无法创建目录 “/usr/lib/dri”: 权限不够 硬件踩坑——CUDA版本选择/安装(不同的深度学习项目需要不同CUDA,显卡与cuda匹配问题) 梦里落花三千.: 很有用,楼主用哪个平台租算力? conda activate 失败(使用Windows PowerShell) m0_68982478: 复现Pixel2Mesh记录 天天向上的乾~: 我也想问一样的问题,请问您复现成功了吗? 硬件踩坑——CUDA版本选择/安装(不同的深度学习项目需要不同CUDA,显卡与cuda匹配问题) weixin_42319617: 我是在不同的虚拟环境装不同的cuda,相互隔离没啥冲突(虽然我有的虚拟环境也出了点问题,但估计不是因为其他虚拟环境的cuda版本问题,毕竟我在base里没有装cuda),但是cuda版本和机器不匹配的问题还是得按你这套来 【anaconda】解决libGL error问题:MESA-LOADER: failed to open iris、MESA-LOADER: failed to open swrast.... rqt命令报错,可打开rqt图形界面,但是无法显示节点 Ubuntu系统下,截图软件(飞书,flameshot等)无法正常截图与编辑