2015-11-13 8 views
0

Я делаю расширение для программы Windows, которая перехватывает объекты COM-сервера. Я хочу использовать Python для этого, и, насколько я понимаю, я могу использовать Py2exe для создания DLL с сервера comtypes.Использование ключевого слова установки ctypes_com_server Py2exe с Python 3

Для теста я написал простой класс, который вызывает метод печати, открытый через RPC. Я создал COM-интерфейс для этого класса, зарегистрировал его, создал экземпляр COM-объекта из другой программы Python и назвал метод печати. Оно работает.

(Я создал репозиторий для справки здесь: https://github.com/jakogut/python-inproc_server)

Однако, когда я использую py2exe создать DLL из моего COM-сервера, и попытаться зарегистрировать, что DLL с помощью regsvr32, всплывающее окно состояния:

модуль «RemotePrint.dll» был загружен, но вызов DllRegisterServer неудачно с кодом ошибки 0x80040201

до сих пор, я попытался запустить из командной строки администратора, очищая comtype и обновить библиотеку DLL, профилируя зависимости библиотеки времени выполнения с помощью Dependency Walker (она зависала/разбилась и не давала никакой полезной информации) и работала на другой машине.

Основываясь на том, что мой код работает так, как должен, когда я регистрирую его с помощью функции регистрации comtypes, я предполагаю, что это не работает как DLL из-за неправильной настройки с моей стороны или причуды с Py2exe и Python 3.

+0

Да, я пробовал это, это не имело значения. – jakogut

ответ

1

Похоже, что проблема заключалась в сбой Python Interpreter, поскольку он не смог импортировать RemotePrintLib из comtypes.gen. Добавление 'comtypes.gen' к опции включения для distutils!

Одна вещь, которая помогла диагностировать это, была win32traceutil.

 Смежные вопросы

  • Нет связанных вопросов^_^