1

我在构建 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>LVCUDA.obj:错误 LNK2019:未解析的外部符号 _cufftPlan2d@16 在函数 _LVcufftPlan2D 中引用

当我尝试构建解决方案时。

我想知道我还缺少什么导致链接器不断抛出未解决的外部符号错误。

从 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 项目\CUDA\调试\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 回答