Моя DLL, использующая COM-объекты с COINIT_MULTITHREADED, больше не работает на Python 3.7 - PullRequest
0 голосов
/ 06 июня 2019

Я использую C ++ DLL с python, который использует COM-объекты. Я загружаю его cdll.LoadLibray.

Мое приложение работало нормально с Python 2.7. Теперь, когда я перехожу на Python 3.7, моя C ++ DLL перестает работать, когда я звоню: CoInitializeEx(NULL,COINIT_MULTITHREADED) с ошибкой 0x80010106: невозможно изменить режим потока после того, как он установлен .

Немного погуглив, я нашел несколько ссылок на sys.coinit_flags = pythoncom.COINIT_MULTITHREADED, но этот фрагмент кода не решает проблему.

Кажется, что Python 3 инициализирует COM самостоятельно, и теперь я не могу изменить модель параллелизма COM.

Как включить COINIT_MULTITHREADED?

1 Ответ

0 голосов
/ 06 июня 2019

Хорошо ... для тех, у кого возникнет эта проблема, после поиска в Google и попыток понять, как заставить Python 3 не инициализировать COM или инициализировать его для MTA (то есть COINIT_MULTITHREADED), я сдался и просто вставил CoUninitialize() в свой C ++код перед вызовом CoInitializeEx(NULL,COINIT_MULTITHREADED), необходимый моей DLL.

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