DLL Hell с распространяемыми компонентами Intel

Некоторые из наших пользователей жалуются на libmmd.dll не найден ошибка при загрузке наших плагинов.

Немного предыстории:

  • Я говорю о проблеме, возникающей на Windows (8, в этом отношении).
  • Разрабатываем плагины для Цифровые аудио рабочие станции (для цифрового звука
    обработка целей).
  • Наш плагин является DLL закодированы в VS2012 и скомпилированы с Intel Compiler 2015 через вызовы Perl-скриптов icl.exe
    из команды
    .
  • Одна из его зависимостей — математика от Intel
    библиотека предоставляется в 2015 вкус его распространяемых (который мы
    установить вместе с нашими плагинами) называется libmmd.dll.

Для удобства давайте назовем плагин DLL plugin.dll (!!!).

У меня не было много времени на компьютере одного из затронутых пользователей, но, как я увидел, переустановка пакета Intel redistributables не помогла, только перемещение libmmd.dll в ту же папку, что и plugin.dll.

Какой бы ни была причина такого (внезапного и неожиданного) поведения, мы хотим иметь возможность предоставлять программное обеспечение, защищенное от подобных проблем (DLL Ад).

Что мы хотим для plugin.dll для поиска библиотек сначала в определенной директории (настраиваемый будет еще лучше), то в обычном порядок поиска.

Я пытался играть с манифесты, реестр, имена библиотек, параметры компоновщика
Единственное, что действительно работало, это переключение / MD опция с / MT (но перекомпиляция со статическими библиотеками действительно увеличивает размер plugin.dll) и копирование библиотеки в папку plugin.dll находится в.

Есть идеи ?
Спасибо !

0

Решение

SetDllDirectory Функция позволяет добавить путь к папке в порядке поиска DLL. Он будет добавлен на втором месте, сразу за самой папкой программы.

Это влияет только на библиотеки DLL, загруженные через LoadLibrary тем не мение; если ваши DLL загружены статически, это не будет иметь никакого значения.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]