cuda包含头文件错误MSB3721(windows.h)

CUDA编程 专栏收录该内容
2 篇文章 0 订阅

       困扰我几天的问题终于解决了!!!抓紧时间记录下来,省得以后再忘记了!!!

       这几天一直看CUDA编程,由于之前看过,但看的很粗略,只知道每个具体是干啥的,没有仔细研究 ,准备这次好好看看,看的是安装cudar后自带的pdf 文档 <<cuda c programming guide>> 。看着就跟着上面的练练,有好奇的地方也改一改看看效果 ,刚跟着编第一个程序,还挺顺利的,是两个向量的相加,在机器上能正确运行,这时候我就想能不能获取一下计算下来时间,就想着使用GetTickCount()了,自然要包含windows.h这个头文件了,这一试不要紧,我的几天时间就这个给搭进去了大哭,本来还是能继续学接下来的内容的,但一想到连windows.h这个头文件都不能包含进去的话,以后学也没什么用了,实验室的项目总不会总让我在黑色的控制台下运行,只好解决这个问题。

       一编译就出去MSB3712的错误,后面还有一大串,是编译时候的参数,看的也不是很懂,但没有告诉是什么原因,只是exited with code 2,然后就开始找原因,去年调用的GetTickCount(),只包含#include <windows.h>,这下总不能再错了吧,可错误还是依然,然后开始查找原因,难道是搜索头文件的路径没有加进来,就到工程设置里面去查找,看到路径都在里面也都是对着,难道它自己生成的CUDA工程是有问题的,那就自己手动设置工程吧,就新建了win32的控制台应用程序,按照网上的教程设置参数,然后把刚开始自动生成 的CUDA工程的kernel.cu文件放进去,也能运行,但只要包含windows.h就还是那个错误。

        好吧,既然系统自已的头文件不行,我试试自写一个试试,就随便写了一个头文件,里面只写了#ifndef...#define...#endif这几句话,在主程序里添加了一句#include <headfile.h> ,这句话刚写进去,没等编译,VS2010就在那句话上划了下划线,提示找不到这个头文件,这下我可蒙了,还从来没有遇到过这样的情况呢。

        那先向QQ群救助吧,之前加过一个CUDA学习群,在里面问了怎么不能包含头文件问题,刚开始说windows.h的事没八搭理 ,就说了自己建头文件的事,然后一个群友就说要写绝对路径 ,试了试确实好用,但总感觉这样太麻烦,程序拿到别的电脑上还得先改一通,这个问题不知道后来怎么着想起来是不是要用引号""而不能是<>,一试果然行。这个问题算是暂时解决了。

        接下来就是要解决windows.h那个问题了。在网上各种查找 ,貌似CUDA很多错误都是给出MSB3721的错误,只不过有的是exited with code 1有的是exited with code 2,自己真是没了主意,是不是自己的症状都先试试再说,当然是问题解决不掉,也搜索各种上关键词,还是不行,cuda development zone也看了很多很相近的问题,但就是不行。真到找到http://stackoverflow.com/questions/3953326/how-to-compile-cuda-app-is-visual-studio-2010,问How to Compile CUDA App is Visual Studio 2010?看到下面的回答,提到建立CUDA工程的步骤,有一项是设置v90 toolse,就是选择vs2008作为替换VS2010的编译工具,就想试试,以为是不是VS2010还不是支持的很好(之前也有问过我的同学,他说是不是我的版本太高了,它那时候用的是CUDA5.5(不保证加头文件好用,我同学了没有试过),我用的最新的6.5版本,本来再不行就要重装了),就装了visual c++ 2008 express,在里面设置成了Project -> properties ->configuration Properties -> general -> v90 toolset,但进去更直接,直接告诉它不支持VS2010,不过在我换回来的时候,看一了Windows7.1SDK,真是抱着试试看的心理,结果竟然是对的。也能调用相应的函数了。

     说了这么多,总结一下,讲的相当啰嗦,大家见谅。

     1:由于是混合编程,程序先由NVCC处理,所以对于include的使用不像VS那样自由了,自己写的头文件要使用“”,而不是<>

     2:要使用windows.h,可以将平台工具集改为Windows7.1SDK,当然可能不止这一种方法,也可能会有更好的,关于Windows7.1SDK,大家可以在http://www.microsoft.com/en-us/download/details.aspx?id=8442http://blogs.msdn.com/b/chuckw/archive/2010/06/15/windows-sdk-7-1.aspx看了,我翻译的会很烂。

     写下自己的经历,只希望大家碰到我相同的问题能少走弯路。

  • 0
    点赞
  • 2
    评论
  • 4
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

wenzishou

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值