none
Указать адрес для поиска DLL в .exe RRS feed

  • Вопрос

  • Здравствуйте. Подключил SFML к проекту и теперь exe-шник везде таскает с собой кучу dll. Хочу сделать так: создать одну папку на ПК (например: C:\\SFML_DLL) из которой приложение будет брать необходимые dll, избавляя меня от груза. Вариант с перемещением dll в System32 и с "вкомпилированием" dll в проект не предлагать. Первый проходит мимо из-за принципов, а второй - из-за возможности выхода новых версий dll. Если можно, то поподробнее. 

    P.S. Может кто подскажет литературу по OpenGL?

    1 июня 2017 г. 13:33

Ответы

  • А функция SetDLLDirectory не поможет? https://msdn.microsoft.com/en-us/library/windows/desktop/ms686203%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396


    Нет, не поможет. Вы используете неявное связывание, поэтому dll ищет загрузчик ОС, а не Ваша программа посредством LoadLibrary.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

Все ответы

  • В любую папку, которая включена в переменную окружения PATH, можно пихать DLL. См. Dynamic-Link Library Search Order
    1 июня 2017 г. 19:42
  • Согласен с предыдущим ответом. Вам поможет лишь переменная окружения PATH. Добавить свой путь к ней можно через Панель управления - Система - Дополнительные параметры системы - Переменные среды.

    По поводу OpenGL - вот.


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    1 июня 2017 г. 21:59
  • А функция SetDLLDirectory не поможет? https://msdn.microsoft.com/en-us/library/windows/desktop/ms686203%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396


  • При использовании функции LoadLibrary, поможет.
  • А функция SetDLLDirectory не поможет? https://msdn.microsoft.com/en-us/library/windows/desktop/ms686203%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396


    Нет, не поможет. Вы используете неявное связывание, поэтому dll ищет загрузчик ОС, а не Ваша программа посредством LoadLibrary.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

  • А как явно подключить SFML? Такое вообще практикуют?
    2 июня 2017 г. 11:09
  • А как явно подключить SFML? Такое вообще практикуют?

    Судя по описанию на сайте разработчика, альтернативой неявной загрузки является лишь статическая линковка. Явно загрузить dll, конечно, теоретически возможно. Однако при этом Вы должны узнать декорированные имена всех методов всех классов SFML, определить для каждого метода соответствующий указатель на функцию, получить для каждого метода его адрес в памяти. Уверяю Вас, это ОЧЕНЬ трудоемкая задача.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    2 июня 2017 г. 11:25
  • Получается, что единственный способ избавится от dll-эшек - прописать PATH? Ну чтож, будем тогда так работать.
    2 июня 2017 г. 12:33