Компиляция расширений Python с помощью VC2010 - PullRequest
0 голосов
/ 13 января 2011

У меня есть некоторый код, написанный на C ++ 0x, который я хочу представить в Python 2.7 как расширение.

Поскольку он использует несколько функций C ++ 0x, я бы предпочел не переписывать его в C ++ 03, поэтому я вынужден использовать VC2010.Однако установка Python 2.7 по умолчанию скомпилирована с VC2008.

Я нашел этот пост , который объясняет, как заставить distutils использовать VC2010, но комментатор указывает, что это приведет к конфликту DLLмежду msvcr90.dll (связан интерпретатором) и msvcr100.dll (связан расширением).

Есть ли способ компилировать расширение в VC2010 без перекомпиляции Python?

(Я начал программировать на Windows только недавно, поэтому у меня нет точного понимания, как там работает динамическое связывание)

1 Ответ

2 голосов
/ 18 апреля 2011

Нет, нет.

Как вы уже поняли, когда вы что-то компилируете с помощью набора инструментов VS2010, он связывается с msvcr100.dll.Поскольку Python связывается с msvcr90.dll, вы получите неприятные сюрпризы, смешивая их в одном и том же приложении.

На данный момент ваш лучший вариант - вероятно, прекратить использование любых функций C ++ 0x и скомпилировать ваше расширение с VS2008 илиmingw.

Если это не то, что вы не собираетесь распространять и предназначено только для игры, компиляция Python с использованием VS2010 - единственный вариант.

...