我在项目中使用 CUDA 驱动程序 API。当我在没有 NVIDIA GPU 的 PC 上执行该项目时,它会给出“未找到 nvcuda.dll”。
问题是:此 DLL 仅与 GPU 驱动程序一起分发,不像在运行时 API 中,您可以将所需的 DLL 放入可执行文件中。我需要在运行时加载这个 DLL,如果它不存在,我会知道 CUDA 不可用。我正在使用 Visual Studio 2012 Professional。
有没有办法做到这一点?
我在项目中使用 CUDA 驱动程序 API。当我在没有 NVIDIA GPU 的 PC 上执行该项目时,它会给出“未找到 nvcuda.dll”。
问题是:此 DLL 仅与 GPU 驱动程序一起分发,不像在运行时 API 中,您可以将所需的 DLL 放入可执行文件中。我需要在运行时加载这个 DLL,如果它不存在,我会知道 CUDA 不可用。我正在使用 Visual Studio 2012 Professional。
有没有办法做到这一点?
Windows 提供了一个 API 函数( LoadLibrary
) 在运行时将 DLL 加载到内存中。您提供一个LPCTSTR
(指向 const 的空终止指针TCHAR
),其中包含您要加载的 DLL 的名称/路径。如果您提供相对路径,Windows 将扫描PATH
该文件的可执行文件的当前目录。如果您提供绝对路径,Windows 将使用它。
如果LoadLibrary
返回NULL
,则 Windows 找不到该文件。
创建一个小型“启动器”应用程序,它将检查系统是否满足您的要求,并根据检查结果启动主应用程序或显示错误。要检查 DLL 是否可用,您可以LoadLibrary()
按照之前的建议使用。