Я использую API драйвера CUDA в проекте. Когда я выполняю проект на ПК, на котором нет графического процессора NVIDIA, он выдает «nvcuda.dll не найден».
Проблема в том, что эта DLL распространяется только с драйвером графического процессора, а не с API времени выполнения, где вы можете поместить необходимую DLL вместе с исполняемым файлом. Мне нужно загрузить эту DLL во время выполнения, и если она не существует, я буду знать, что CUDA недоступен. Я использую Visual Studio 2012 Professional.
Есть способ сделать это?
Windows предоставляет функция API (LoadLibrary
) для загрузки DLL в память во время выполнения. Вы предоставляете LPCTSTR
(нулевой завершенный указатель на const TCHAR
) содержащий имя / путь к DLL, которую вы хотите загрузить. Если вы укажете относительный путь, Windows будет сканировать PATH
и текущий каталог исполняемого файла для файла. Если вы укажете абсолютный путь, Windows будет его использовать.
Если LoadLibrary
возвращается NULL
Windows не может найти файл.
Создайте небольшое приложение «Launcher», которое проверит, соответствует ли система вашим требованиям, и запустит основное приложение или отобразит ошибку в зависимости от результатов проверки.
Чтобы проверить, доступна ли DLL, вы можете использовать LoadLibrary()
как ранее предложено.