Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在运行时加载DLL_C++_C_Windows_Cuda_Visual Studio 2012 - Fatal编程技术网

C++ 在运行时加载DLL

C++ 在运行时加载DLL,c++,c,windows,cuda,visual-studio-2012,C++,C,Windows,Cuda,Visual Studio 2012,我正在一个项目中使用CUDA驱动程序API。当我在没有NVIDIA GPU的PC上执行项目时,它会给出“未找到nvcuda.dll” 问题是:此DLL仅随GPU驱动程序一起分发,而不像在运行时API中,您可以将所需的DLL与可执行文件一起放置。我需要在运行时加载这个DLL,如果它不存在,我将知道CUDA不可用。我正在使用Visual Studio 2012 Professional 有没有办法做到这一点?Windows提供(LoadLibrary)在运行时将DLL加载到内存中。您提供了一个包含要

我正在一个项目中使用CUDA驱动程序API。当我在没有NVIDIA GPU的PC上执行项目时,它会给出“未找到nvcuda.dll”

问题是:此DLL仅随GPU驱动程序一起分发,而不像在运行时API中,您可以将所需的DLL与可执行文件一起放置。我需要在运行时加载这个DLL,如果它不存在,我将知道CUDA不可用。我正在使用Visual Studio 2012 Professional

有没有办法做到这一点?

Windows提供(
LoadLibrary
)在运行时将DLL加载到内存中。您提供了一个包含要加载的DLL的名称/路径的
LPCTSTR
(指向常量
TCHAR
的以null结尾的指针)。如果提供相对路径,Windows将扫描文件的路径和可执行文件的当前目录。如果提供绝对路径,Windows将使用该路径

如果
LoadLibrary
返回
NULL
,Windows将找不到该文件。

Windows提供(
LoadLibrary
)在运行时将DLL加载到内存中。您提供了一个包含要加载的DLL的名称/路径的
LPCTSTR
(指向常量
TCHAR
的以null结尾的指针)。如果提供相对路径,Windows将扫描文件的路径和可执行文件的当前目录。如果提供绝对路径,Windows将使用该路径

如果
LoadLibrary
返回
NULL
,Windows将找不到该文件。

创建一个小的“启动器”应用程序,该应用程序将检查系统是否满足您的要求,并根据检查结果启动主应用程序或显示错误。 要检查DLL是否可用,您可以使用前面建议的
LoadLibrary()

创建一个小型“启动器”应用程序,该应用程序将检查系统是否满足您的要求,并根据检查结果启动主应用程序或显示错误。
要检查DLL是否可用,您可以使用前面建议的
LoadLibrary()

似乎这是一个。您希望API有一些允许动态加载的选项。有关于那个API的文档吗?另外,我假设您在所需的CUDA DLL不存在的情况下有一些备用位置?看起来这是一个。您希望API有一些允许动态加载的选项。有关于那个API的文档吗?此外,我假设您在所需的CUDA DLL不存在的情况下有一些备用位置?是的,但由于DLL是在运行时自动加载的,因此我需要一种方法“告诉”编译器我不希望它自己加载。因为当我启动executable.Ahh时,它无论如何都会尝试加载DLL。我懂了。您可能希望与手动加载相结合。是的,但是由于DLL是在运行时自动加载的,因此我需要一种方法来“告诉”编译器我不希望它自己加载。因为当我启动executable.Ahh时,它无论如何都会尝试加载DLL。我懂了。您可能希望与手动加载相结合。