Встраивание Python в Windows: почему это должна быть DLL?

Я пытаюсь написать программный плагин, который встраивает Python. В Windows подключаемый модуль технически представляет собой DLL (это может иметь значение). В Python Windows FAQ говорится:

1. Не не встраивайте Python напрямую в ваш .exe файл. В Windows Python должен быть DLL для обработки импорта модулей, которые сами являются DLL. (Это первый ключевой недокументированный факт.) Вместо этого сделайте ссылку на pythonNN.dll; обычно он устанавливается в C: \ Windows \ System. NN - это версия Python, такое число, как «23» для Python 2.3.

Мой вопрос: почему именно Python должен быть DLL? Если, как в моем случае, хост-приложение является не .exe, а также DLL, могу ли я встроить в него Python? Или, возможно, это примечание означает, что сторонние расширения C полагаются на наличие pythonN.N.dll , а другие DLL не подходят? Если предположить, что я действительно хочу иметь одну DLL, что мне делать?

Я вижу файл dynload_win.c , который, похоже, является модулем для импорта расширений C в Windows, и, насколько я могу судить, он сканирует файл расширения, чтобы найти, какой pythonX.X.dll он импортирует; но у меня нет опыта работы с Windows, и я не совсем понимаю весь код там.

9
задан Mikhail Edoshin 17 October 2010 в 11:38
поделиться