构建DLL解决方案时遇到问题。我正在制作用于LabVIEW 2010的DLL以获得CUDA功能。但是,我想要导出的每一个函数都会收到链接器错误LNK2019。
#include "LVCUDA.h"
#include "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\include\cufft.h"
#include "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\include\cuda.h"
#include <windows.h>
#include <string.h>
#include <ctype.h>
BOOL WINAPI DllMain (
HANDLE hModule,
DWORD dwFunction,
LPVOID lpNot)
{
return TRUE;
}
__declspec(dllexport) cufftHandle LVcufftPlan2D(int Xsize, int Ysize){
cufftHandle plan;
cufftPlan2d(&plan, Xsize, Ysize, CUFFT_C2C);
return plan;
}
__declspec(dllexport) void LVexecute(cufftHandle plan, cufftComplex *data, int direction){
if (direction == 1) cufftExecC2C(plan, data, data, CUFFT_INVERSE);
else cufftExecC2C(plan, data, data, CUFFT_FORWARD);
}
__declspec(dllexport) void LVdestroy(cufftHandle plan){
cufftDestroy(plan);
}
__declspec(dllexport) void LV_cudaFree(CUdeviceptr ptr){
cuMemFree(ptr);
}
__declspec(dllexport) void LV_cudaMalloc(CUdeviceptr *ptr, int cnt){
cuMemAlloc(ptr, cnt);
}
__declspec(dllexport) void LV_cudaMemcopy(CUdeviceptr src, CUdeviceptr dst, int cnt){
cuMemcpy(dst, src, cnt);
}
我已经将构建自定义更改为CUDA 4.0,因此所有库都包含在依赖项中。但是,我仍然收到以下错误:
1&gt; LVCUDA.obj:错误LNK2019:函数_LVcufftPlan2D中引用的未解析的外部符号_cufftPlan2d @ 16
当我尝试构建解决方案时。
我想知道我还缺少什么导致链接器继续抛出未解决的外部符号错误。
从CUDA生成的自动命令行是:
/ OUT:“C:\ VC Projects \ CUDA \ Debug \ CUDA.dll”/ INCREMENTAL / NOLOGO / LIBPATH:“C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v4.0 \ bin”/ LIBPATH :“C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v4.0 \ lib \ x64”/ LIBPATH:“C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v4.0 \ lib \ Win32”/ DLL “cudart.lib”“kernel32.lib”“user32.lib”“gdi32.lib”“winspool.lib”“comdlg32.lib”“advapi32.lib”“shell32.lib”“ole32.lib”“oleaut32.lib” “uuid.lib”“odbc32.lib”“odbccp32.lib”/ MANIFEST /ManifestFile:"Debug\CUDA.dll.intermediate.manifest“/ ALLOWISOLATION / MANIFESTUAC:”level ='asInvoker'uiAccess ='false'“/ DEBUG / PDB:“C:\ VC Projects \ CUDA \ Debug \ CUDA.pdb”/ SUBSYSTEM:WINDOWS / PGD:“C:\ VC Projects \ CUDA \ Debug \ CUDA.pgd”/ TLBID:1 / DYNAMICBASE / NXCOMPAT / MACHINE :X86 / ERRORREPORT:QUEUE
答案 0 :(得分:2)
我在链接器命令中看到了cudart.lib,但没有看到cufft.lib。可能是问题的根源。
我不知道“从CUDA生成的自动命令行”意味着什么,所以我不确定你将如何更改内容。我只是在VS Linker属性中手动添加Cuda库。