在VS2010(CUDA)中导出DLL的问题

时间:2011-06-28 18:58:57

标签: visual-studio-2010 cuda dllexport

构建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

1 个答案:

答案 0 :(得分:2)

我在链接器命令中看到了cudart.lib,但没有看到cufft.lib。可能是问题的根源。

我不知道“从CUDA生成的自动命令行”意味着什么,所以我不确定你将如何更改内容。我只是在VS Linker属性中手动添加Cuda库。