1

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

4

1 に答える 1

2

リンカー コマンドに cudart.lib が表示されますが、cufft.lib は表示されません。おそらく問題の原因です。

「CUDA から生成された自動コマンドライン」が何を意味するのかわからないので、どのように変更する必要があるのか​​ わかりません。VS Linker のプロパティに Cuda ライブラリを手動で追加するだけです。

于 2011-06-28T21:02:00.017 に答える