C ++ установить место поиска dll [дубликаты]

0

В настоящее время я разрабатываю приложение C++ с SDL, которое требует, чтобы DLL работали. Прямо сейчас, он найдет только DLL файлы в той же папке, что и программа. Как выполнить поиск программы в подкаталоге с именем "libs".

  • 0
    почему бы не сделать ярлык?
  • 0
    Почему бы не скопировать DLL в C:\WINDOWS\system32 ?
Показать ещё 3 комментария
Теги:
c++11
sdl

2 ответа

1
Лучший ответ

Если вы используете привязку времени загрузки, вам нужно, чтобы DLL находилась в пути поиска DLL. Это описано здесь: Порядок поиска библиотеки Dynamic-Link. Обычно это требует, чтобы вы добавили папку DLL в PATH среды PATH. Теперь добавление папки в PATH среды PATH является тяжелым решением проблемы. Вы, конечно, не хотите этого делать.

С другой стороны, если вы переключитесь на ссылку времени выполнения, вы можете передать полный путь вашей DLL к LoadLibrary. Вы можете вызвать GetModuleFileName чтобы найти имя файла исполняемого файла, а затем вытащить каталог и добавить \libs\MyDll.dll. Но большой недостаток ссылки времени выполнения заключается в том, что вам нужно использовать GetProcAddress для каждой импортируемой функции.

Ни один из этих вариантов не является особенно привлекательным. Моим советом было бы изменить предлагаемый дизайн. Поместите все библиотеки DLL, необходимые исполняемому файлу, в тот же каталог, что и исполняемый файл.

1

Добавьте путь к папке dll в Environment Variables (будьте осторожны, чтобы пути там были разделены ;).

  • 0
    Я хочу, чтобы это был универсальный параметр, так что даже если бы я распространял файлы, программа все равно знала, где искать dll.
  • 0
    @ tVoss42 Это будет универсальная настройка, как минимум для вашего ПК.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню