Unresolved external symbols in beginners CUDA program(初学者 CUDA 程序中未解析的外部符号)
问题描述
我创建了一个新的 Win32 控制台应用程序作为一个空项目我正在使用 Visual Studio 2008 C++ 运行 Windows 7 64 位.我试图从本文底部获取示例代码来构建:http://www.ddj.com/architect/207200659
我将 CUDA Build Rule v2.3.0 添加到项目的自定义构建规则中.它是可用规则文件列表中唯一带有复选框的东西
我在源文件(文件夹/过滤器???)中创建了 moveArrays.cu
在该文件中,我添加以下代码:
//moveArrays.cu////演示 CUDA 接口到设备(GPU)上的数据分配//以及主机(CPU)和设备之间的数据移动.#include #include #include int main(void){浮动*a_h,*b_h;//指向主机内存的指针浮动 *a_d, *b_d;//指向设备内存的指针整数 N = 14;国际我;//在主机上分配数组a_h = (float *)malloc(sizeof(float)*N);b_h = (float *)malloc(sizeof(float)*N);//在设备上分配数组cudaMalloc((void **) &a_d, sizeof(float)*N);cudaMalloc((void **) &b_d, sizeof(float)*N);//初始化主机数据对于 (i=0; i构建时出现以下错误:
<前>1>------ 构建开始:项目:CUDASandbox,配置:调试 x64 ------1>链接...1>moveArrays.cu.obj : error LNK2019: 函数 main 中引用了未解析的外部符号 cudaFree1>moveArrays.cu.obj : error LNK2019: 函数 main 中引用了未解析的外部符号 cudaMemcpy1>moveArrays.cu.obj : error LNK2019: 函数 main 中引用了未解析的外部符号 cudaMalloc1>moveArrays.cu.obj:错误 LNK2019:未解析的外部符号 __cudaUnregisterFatBinary 在函数 __cudaUnregisterBinaryUtil 中引用1>moveArrays.cu.obj:错误 LNK2019:未解析的外部符号 __cudaRegisterFatBinary 在函数 __sti____cudaRegisterAll_45_tmpxft_00001264_00000000_6_moveArrays_cpp1_ii_main 中引用1>D:StuffProgrammingVisual Studio 2008ProjectsCUDASandboxx64DebugCUDASandbox.exe:致命错误 LNK1120:5 个未解析的外部1>构建日志保存在file://d:StuffProgrammingVisual Studio 2008ProjectsCUDASandboxCUDASandboxx64DebugBuildLog.htm"1>CUDASandbox - 6 个错误,0 个警告========== 构建:0 成功,1 失败,0 最新,0 跳过 ==========
我可以编译和运行 SDK 附带的示例 CUDA 程序.我知道我在这里遗漏了一些简单的东西,但它是什么?
我猜你没有链接到正确的库.确保在配置属性->链接器->输入"下添加了 CUDA 库.请参阅此.
I create a new Win32 Console App as an empty project I am running Windows 7 64bit with Visual Studio 2008 C++. I am trying to get the sample code from the bottom of this article to build: http://www.ddj.com/architect/207200659
I add CUDA Build Rule v2.3.0 to the project's custom build rules. It is the only thing with a checkbox in the available rule files list
I create moveArrays.cu in the Source Files (folder/filter???)
In that file I add the following code:
// moveArrays.cu
//
// demonstrates CUDA interface to data allocation on device (GPU)
// and data movement between host (CPU) and device.
#include <stdio.h>
#include <assert.h>
#include <cuda.h>
int main(void)
{
float *a_h, *b_h; // pointers to host memory
float *a_d, *b_d; // pointers to device memory
int N = 14;
int i;
// allocate arrays on host
a_h = (float *)malloc(sizeof(float)*N);
b_h = (float *)malloc(sizeof(float)*N);
// allocate arrays on device
cudaMalloc((void **) &a_d, sizeof(float)*N);
cudaMalloc((void **) &b_d, sizeof(float)*N);
// initialize host data
for (i=0; i<N; i++) {
a_h[i] = 10.f+i;
b_h[i] = 0.f;
}
// send data from host to device: a_h to a_d
cudaMemcpy(a_d, a_h, sizeof(float)*N, cudaMemcpyHostToDevice);
// copy data within device: a_d to b_d
cudaMemcpy(b_d, a_d, sizeof(float)*N, cudaMemcpyDeviceToDevice);
// retrieve data from device: b_d to b_h
cudaMemcpy(b_h, b_d, sizeof(float)*N, cudaMemcpyDeviceToHost);
// check result
for (i=0; i<N; i++)
assert(a_h[i] == b_h[i]);
// cleanup
free(a_h); free(b_h);
cudaFree(a_d); cudaFree(b_d);
}
When I build I get these errors:
1>------ Build started: Project: CUDASandbox, Configuration: Debug x64 ------ 1>Linking... 1>moveArrays.cu.obj : error LNK2019: unresolved external symbol cudaFree referenced in function main 1>moveArrays.cu.obj : error LNK2019: unresolved external symbol cudaMemcpy referenced in function main 1>moveArrays.cu.obj : error LNK2019: unresolved external symbol cudaMalloc referenced in function main 1>moveArrays.cu.obj : error LNK2019: unresolved external symbol __cudaUnregisterFatBinary referenced in function __cudaUnregisterBinaryUtil 1>moveArrays.cu.obj : error LNK2019: unresolved external symbol __cudaRegisterFatBinary referenced in function __sti____cudaRegisterAll_45_tmpxft_00001264_00000000_6_moveArrays_cpp1_ii_main 1>D:StuffProgrammingVisual Studio 2008ProjectsCUDASandboxx64DebugCUDASandbox.exe : fatal error LNK1120: 5 unresolved externals 1>Build log was saved at "file://d:StuffProgrammingVisual Studio 2008ProjectsCUDASandboxCUDASandboxx64DebugBuildLog.htm" 1>CUDASandbox - 6 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
I can compile and run the example CUDA programs that came with the SDK. I know I am missing something simple here, but what is it?
I guess you are missing to link to the correct library. Make sure you have the CUDA library added under "Configuration Properties->Linker->Input". Refer this.
这篇关于初学者 CUDA 程序中未解析的外部符号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:初学者 CUDA 程序中未解析的外部符号
基础教程推荐
- 从 std::cin 读取密码 2021-01-01
- Windows Media Foundation 录制音频 2021-01-01
- 如何在不破坏 vtbl 的情况下做相当于 memset(this, ...) 的操作? 2022-01-01
- 管理共享内存应该分配多少内存?(助推) 2022-12-07
- 为 C/C++ 中的项目的 makefile 生成依赖项 2022-01-01
- 使用从字符串中提取的参数调用函数 2022-01-01
- 如何使图像调整大小以在 Qt 中缩放? 2021-01-01
- 如何“在 Finder 中显示"或“在资源管理器中显 2021-01-01
- 在 C++ 中循环遍历所有 Lua 全局变量 2021-01-01
- 为什么语句不能出现在命名空间范围内? 2021-01-01