[英]Problems with exporting DLL in VS2010 (CUDA)
我在構建 DLL 解決方案時遇到了問題。 我正在制作 DLL 以便在 LabVIEW 2010 中使用,以便具有 CUDA 功能。 但是,我要導出的每個函數都收到 linker 錯誤 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>LVCUDA.obj: error LNK2019: 未解析的外部符號 _cufftPlan2d@16 在 function _LVcufftPlan2D 中引用
當我嘗試構建解決方案時。
我想知道我還遺漏了什么導致 linker 不斷拋出未解決的外部符號錯誤。
從 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" /ALLOISOLATION /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 /錯誤報告:隊列
我在您的 linker 命令中看到了 cudart.lib,但沒有看到 cufft.lib。 可能是問題的根源。
我不知道“從 CUDA 生成的自動命令行”是什么意思,所以我不確定您需要如何進行更改。 我只是在 VS Linker 屬性中手動添加 Cuda 庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.