首页 文章

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

提问于
浏览
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:函数_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:队列

1 回答

  • 2

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

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

相关问题