CUDA编译配置中来自 CUDA 12.1.targets 的MSB3721错误和核函数调用语法错误‘<’解决及可用的代码示例框架

今天开始整cuda编程处理图像,好久没玩cuda,又从小白开始。情况不妙,第一个工程坑不少,记录一下如下2个重要的错误:
(1)来自 CUDA 12.1.targets 的MSB3721错误

错误 命令““C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin\nvcc.exe” -XXXXX-C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\include" -G --keep-dir x64\Debug -maxrregcount=0 --machine 64 --compile ”已退出,返回代码为 255。XXXXXX\CUDA 12.1.targets。
总之就是除了报这个错误,还有一长串别的都是跟sm_相关的错误,检查代码计算没有问题,就是编译一直一长串。。。
那么按照如下操作看看:
1)检查工程配置属性
鼠标落在解决方案上->右键->生成依赖项->生成自定义,查看确保已经选中如下:
在这里插入图片描述
2)查看.cu文件的属性
鼠标落点.cu文件,右键->属性,查看项类型为如下:
在这里插入图片描述
3)检查编译器,确保为X64(此处非常容易忽略)
查看状态栏:
在这里插入图片描述
查看解决方案->属性:
在这里插入图片描述
(2)提示调用语法错误‘<’
这个问题比较烦神,搜罗一圈都说cpp中不能直接调用核函数<<<,>>>,需要extern "c"去修饰,但是也不太明白怎么个修饰安置法。那么我再仔细理一下:
先上代码:

.cpp 文件如下:

#include "processImg.cuh"
#include <stdio.h>  
#include <stdlib.h> 
#include <math.h> 
#include <iostream>

int main()
{
   
   
    int N = 1 << 20;
    int nBytes = N * sizeof(float);
    // 申请host内存
    float* x, * y, * z;
    x = (float*)malloc(nBytes);
    y = (float*)malloc(nByte
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值