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