在运行时加载 DLL
Load DLL at runtime
我正在一个项目中使用 CUDA 驱动程序 API。当我在没有 NVIDIA GPU 的 PC 上执行项目时,它会给出"nvcuda.dll找不到"。
问题是:此 DLL 仅与 GPU 驱动程序一起分发,不像在运行时 API 中那样,您可以将所需的 DLL 与可执行文件一起放置。我需要在运行时加载这个 DLL,如果它不存在,我会知道 CUDA 不可用。我正在使用Visual Studio 2012 Professional。
有没有办法做到这一点?
Windows提供了一个API函数(LoadLibrary
)在运行时将DLL加载到内存中。提供一个LPCTSTR
(指向常量TCHAR
的 null 终止指针),其中包含要加载的 DLL 的名称/路径。如果提供相对路径,Windows 将扫描PATH
和可执行文件的当前目录以查找该文件。如果您提供绝对路径,Windows 将使用该路径。
如果LoadLibrary
返回NULL
,Windows 找不到该文件。
创建一个小型的"启动器"应用程序,该应用程序将检查系统是否满足您的要求,并根据检查结果启动主应用程序或显示错误。若要检查 DLL 是否可用,可以按照前面的建议使用LoadLibrary()
。
相关文章:
- 从 wxWidgets 中的.DLL加载图标
- 视觉C++:在 DLL 加载期间,全局变量初始化顺序是否具有确定性?
- 无法使用c++/cli包装从c#dll加载函数
- 混合延迟 dll 加载和手动调用 LoadLibraryA 是否安全?
- 无法从 dll 加载函数
- 如何设置我的dll加载,该dll取决于Env-ailiable的某些第三部分DLL
- 将本机非托管的C DLL加载到托管的C#应用中,导致DLL输出垃圾
- 无法在 Python 3.5 上导入 cv2 DLL 加载失败
- 当使用“空dllmain”的dll加载链接到DLL时,应用程序无法启动(0xc0000142)
- 如何从DLL加载的DLL链接到函数
- 如何从Java中的C DLL加载和使用结构和功能
- 我可以用具有相同功能名称的多个DLL加载元素吗?
- 窗口挂钩和 dll 加载
- CEGUI-从DLL加载资源
- 什么可能导致时间函数和 DLL 加载之间死锁
- 以下代码是如何工作的(从DLL加载动态类)
- 错误:Visual Studio中没有为opencv_world310.dll加载符号
- 使用 LoadLibraryA 的 dll 加载错误
- 从 WinAPI C 项目中的专用 DLL 加载图像资源
- 模块"MyShellExt.dll"加载失败