在Visual Studio 2010中运行CUDA程序(由于32位与64位编译而出错)



这是一个问题,是从另一个已发布的问题衍生出来的,可以在以下链接中找到:

CUDA - 使用卷积示例链接错误

VS2008 不编译库达

在上面的链接和关于同一主题的其他几篇文章中,他们指出,如果您编译 32 位 cuda,这将解决您的构建/编译问题......

任何人都可以帮助我找到一篇展示如何链接到 32 位 CUDA 的文章。这说不通。下载 CUDA 工具包时,您可以选择下载 64 位或 32 位。两者都不下载。那么这些人只是下载 32 位版本的 CUDA 吗?这似乎很荒谬,我知道这不可能是他们的意思。任何帮助将不胜感激。

当他们

说"链接到 32 位 CUDA"时,任何关于他们在谈论什么的帮助将不胜感激。


错误消息(与以前的帖子相同)

1>链接:警告LNK4098:默认库"MSVCRTD"与其他库的使用冲突;使用/NODEFAULTLIB:Library1>TestForCuda.cu.obj :错误 LNK2019:函数"void __cdecl __device_stub__Z10kernelTestPi(int *)"(?__device_stub__Z10kernelTestPi@@YAXPAH@Z) 中引用未解析的外部符号_cudaSetupArgument@121>TestForCuda.cu.obj :错误 LNK2019:函数"void __cdecl __sti____cudaRegisterAll_46_tmpxft_000022ac_00000000_3_TestForCuda_cpp1_ii_da17b9e9(void)"(?__sti____cudaRegisterAll_46_tmpxft_000022ac_00000000_3_TestForCuda_cpp1_ii_da17b9e9@@YAXXZ) 中引用未解析的外部符号___cudaRegisterFunction@401>TestForCuda.cu.obj :错误LNK2019:函数"void __cdecl __sti____cudaRegisterAll_46_tmpxft_000022ac_00000000_3_TestForCuda_cpp1_ii_da17b9e9(void)"(?__sti____cudaRegisterAll_46_tmpxft_000022ac_00000000_3_TestForCuda_cpp1_ii_da17b9e9@@YAXXZ)中引用未解析的外部符号___cudaRegisterFatBinary@41>TestForCuda.cu.obj :错误 LNK2019:函数"void __cdecl __cudaUnregisterBinaryUtil(void)"(?__cudaUnregisterBinaryUtil@@YAXXZ)中引用未解析的外部___cudaUnregisterFatBinary@4符号1>TestForCuda.cu.obj :错误LNK2019:_cudaLaunch@4函数"enum cudaError __cdecl cudaLaunch(char *)"(??$cudaLaunch@D@@YA?AW4cudaError@@PAD@Z)1>C:\Users\misc\Documents\Visual Studio 2010\Projects\TestForCuda\Test_Configuration\TestForCuda.exe : 致命错误 LNK1120: 5 个未解析的外部1>1>构建失败。

我试图编译的项目是我从头开始创建的VS2010项目。 该代码是我从互联网上下载的测试代码。我实际上有两个问题...

第一个问题:

在"构建自定义"下,您需要选择要用于构建的 CUDA 版本。 我选择了显示的最高版本,即"CUDA 4.2(.targets,.props)"。 问题是我链接到 CUDA 版本 5.0。 当我说"链接"时,我指的是链接选项,您可以在VS2010菜单栏中的"项目=>属性=>配置属性=>链接器"中找到该选项。 当您进入此菜单时,您可以选择添加"其他库目录"。 我已经链接到 CUDA 版本 5.0。 我还没有弄清楚为什么我在"构建自定义"下没有 CUDA v5.0 ......但这是另一天的问题。
教训:无论您链接到哪个版本的cude(在链接器菜单中),您都应该在"构建自定义"菜单中选择的版本。

第二个问题:

我在 Windows 7(64 位)上运行,处理器是 64 位

(英特尔四核),我下载的 CUDA sdk/工具包是 64 位,但我试图使用 Win32 平台进行调试。 是的,我知道我需要使用正确的位平台进行编译/构建,但无知地,我不知道如何将"平台"(位于 VS 项目的"配置管理器"菜单中)更改为 x64。 网络上的操作方法显示 x64 选项已在"平台"下拉列表中可用。 我读了后来的文章,这些文章说 VS 只能在 Win32 中调试,但可以在 Win32 或 x64 中编译(不是真的),这让我更加害怕。 实际上,如果这是您第一次使用 x64 平台,则 x64 选项将不会出现在平台下拉列表中。 您必须创建一个"新"平台。 执行此操作时,您需要为"从以下位置复制设置:"下拉菜单中选择 x64。 我想说我以前试过这个,但"复制设置表单:"下拉列表中没有 x64 选项。 我之前忽略了 x64"从以下位置复制设置:"选项......或者此选项是在我执行 Roger 建议的自定义安装后添加的(我希望我能记住/对此更加观察)。教训:如果您是第一次使用 x64 选项,可能需要在"配置管理器"菜单中"创建新"平台(相信 VS 调试可能默认为 Win32 ...但如果需要,可以轻松更改为 x64)。

无论如何,在修复了这两件事(不仅仅是一个......但两者兼而有之),CUDA 代码确实成功编译。 我只想再次感谢大家的帮助! 让我朝着正确的方向前进!

PS:不错的教程(不是我的,但我曾经帮助过我)来帮助您编译您的第一个 CUDA 代码http://www.youtube.com/watch?v=1HMVg40fsg0

最新更新