DLL ソリューションをビルドするときに問題が発生しました。CUDA 機能を持たせるために、LabVIEW 2010 で使用する DLL を作成しています。ただし、エクスポートするすべての関数でリンカー エラー 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: エラー 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