У меня есть приложение C++ для Windows, скомпилированное с помощью MSVC, которое во время выполнения связывается с несколькими DLL. Приложение имеет внешний интерфейс Excel: файл .xll, который пользователь может загрузить в Excel. Пользователь должен иметь возможность загрузить xll из любого места.
Все dll расположены на общем диске, и ни один из пользователей не добавил это местоположение в свою переменную пути Windows (мне бы этого не хотелось, поскольку эти dll могут конфликтовать с другими программами). Я сделал приложение таким, что при запуске приложения переменная пути Windows изменяется локально (только в сеансе, в котором работает приложение), чтобы включить путь к этим dll.
Это работает только потому, что в моем решении Visual Studio я могу указать, что эти DLL должны загружаться с задержкой (динамическая загрузка во время выполнения).
Вот моя проблема: я хочу использовать boost-python для внешнего интерфейса Python. Boost python заставляет мое приложение загружать python27.dll при запуске приложения (связывание во время загрузки), т.е. без задержки.
На самом деле я попытался связать с задержкой и получил следующую ошибку: 1> ССЫЛКА: фатальная ошибка LNK1194: невозможно отложить загрузку «python27.dll» из-за импорта символа данных «__imp___Py_NoneStruct»; ссылка без /DELAYLOAD:python27.dll
Мой вопрос заключается в том, могу ли я каким-то образом изменить путь поиска во время загрузки из своего приложения?
Обратите внимание, что все те пользователи, которые используют внешний интерфейс Excel, не собираются использовать внешний интерфейс python (который предназначен для другой группы пользователей), поэтому я не могу быть уверен, что у этих пользователей Excel установлен python, особенно не версия 2.7.
Заранее большое спасибо, Неле.