外部变量没有定义

将别人的程序拿到自己电脑上来调的时候发现报错了,错误显示为第一个错误:volumeRender.obj : error LNK2019: unresolved external symbol _cudaMallocArray@16 referenced in function “void __cdecl initCuda(unsigned short *,struct cudaExtent)” (?initCuda@@YAXPAGUcudaExtent@@@Z)第二个错误:volumeRender.obj : error LNK2019: unresolved external symbol _cudaMalloc3DArray@20 referenced in function “void __cdecl initCuda(unsigned short *,struct cudaExtent)” (?initCuda@@YAXPAGUcudaExtent@@@Z)
1>…/…/bin/win32/Debug/volumeRender.exe : fatal error LNK1120: 2 unresolved externals

不知道是不是缺少了哪个库没有加进去?

请指点,谢谢

楼主您好。

您的猜测应该是正确的。您可能没有链接进去cuda的runtime library. (因为提示无法找到外部符号:_cudaMallocArray和_cudaMalloc3DArray)

我建议您在您的solution的project的右键属性的linker input里,加入cudart.lib.

此外还有1可选建议:
如果您没有设置好您的linker的额外的搜索路径,我建议您将cuda toolkit安装路径下的lib目录下的win32目录(这里放有32位的库),假如到您的路径中。
如果您已经这么做过了,请无视此可选建议。

感谢您的来访!
祝您写作愉快!

谢谢,我试试

请问第二句话的意思是说将C:\Windows\System32添加到lib文件中吗?
我按照你说的做了,可是结果还是报同样的错误

引用:“我建议您将cuda toolkit安装路径下的lib目录下的win32目录(这里放有32位的库)”

显然您添加c:\windows\system32\到linker的搜索目录里是不对的。
您应该添加:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\lib\Win32

如果您没有安装到默认路径下,或者您安装的toolkit不是4.2的,请酌情修改。

我的toolkit是4.1版本的,请问为什么要4.2的啊??????

“如果您没有安装到默认路径下,或者您安装的toolkit不是4.2的,请酌情修改。”

呵呵,麻烦您解释更具体些,我不是很懂您说的

5#提供了一个cuda toolkit 4.2的lib的默认路径供您参考,路径为:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\lib\Win32

如果您在安装toolkit的时候使用的是默认路径,但toolkit的版本为4.1,那么请您将上述路径中的“v4.2”修改为“v4.1”即可。

实际上,如果您安装了多个cuda toolkit的话,您会发现他们的默认安装路径都在
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\ 下面
如图:
[attach]2987[/attach]

好的,谢谢了

不客气,欢迎您常来论坛转转~