Загрузка 32-битных и 64-битных DLL в 64-битном процессе Python - PullRequest
0 голосов
/ 18 октября 2019

У меня есть сценарий Python (в Windows), который зависит от различных оболочек из соответствующей 32-разрядной библиотеки DLL и 64-разрядной библиотеки DLL. Есть ли способ, подобный механизму песочного бокса, который позволяет мне загружать как 64-битную DLL, так и 32-битную DLL из одной среды (процесс 64-битного Python)?

Для дальнейшего понимания,Вот пример: допустим, у меня есть скрипт python test.py. Test.py вызывает fun1 и fun2. fun1 определен в fun1_test.pyd (32-разрядная версия), а fun2 определен в fun2_test.pyd (64-разрядная версия).

Вот что я пробовал: поскольку в 64-разрядной среде в идеале можно запустить 32-бит DLL, я попытался выполнить сценарий Python с 64-разрядным процессом Python. Но я замечаю следующую ошибку: «WindowsError: [Ошибка 193]% 1 не является допустимым приложением Win32»

Когда я запускаю обходчик зависимостей, он дает ссылки на несоответствие ЦП (x86 и x64) DLL.

Есть ли более чистый способ добиться этого?

1 Ответ

0 голосов
/ 18 октября 2019

Я не думаю, что можно импортировать 32-битную DLL из 64-битного процесса. Указатели будут разных размеров.

Было бы проще найти 64-битную версию и использовать ее.

Это не относится к Python, но этот вопрос объясняет проблему: Конвертировать 32bit dll до 64 bit dll

Вот статья, в которой автор декомпилировал 32-битную программу и переписал ее для 64-битной: http://www.developingthefuture.net/disassembling-decompiling-and-modifying-executables/ Хотя это не DLL-библиотека Python.

(Я также пометил этот дубликат, просто хотел также дать совет. Дайте мне знать, если это неправильно.)

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