Как получить python для загрузки .NET .dlls, на которые ссылается смешанный режим .dll? - PullRequest
2 голосов
/ 04 июня 2010

У меня есть Python .pyd, который является C ++ DLL в смешанном режиме. DLL загружается нормально и загружает неуправляемые библиотеки C ++ без проблем, но при попытке загрузить библиотеки .NET, на которые ссылаются управляемые библиотеки C ++, происходит сбой с сообщением об ошибке:

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly '...'

Копирование этих библиотек .NET в каталог, в котором находится pythod_d.exe, позволяет библиотекам .NET успешно загружаться, но это не является хорошим долгосрочным решением. Есть ли переменная окружения, которую я должен установить, или какой-либо параметр командной строки для python_d.exe, который решит мою проблему?

Обратите внимание, что использование IronPython или Python .NET НЕ допустимо.

Ответы [ 2 ]

1 голос
/ 11 июня 2010

Я думаю, что я решил проблему. Загрузка сборки не использует путь, заданный SetDllDirectory (), и похоже, что Python вызывает эту функцию. Зарегистрировав делегата для события AppDomain.AssemblyResolve () , я могу поймать имя dll, который не удалось, добавить его в каталог, полученный из GetDllDirectory (), а затем вручную загрузить сборку самостоятельно.

0 голосов
/ 04 июня 2010

У меня есть немного опыта с этим. Я считаю, что это связано с проблемами пути и инициализации, как указано в http://effbot.org/pyfaq/is-a-pyd-file-the-same-as-a-dll.htm.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...