2011-01-13 8 views
0

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

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

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

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

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

ответ

2

Нет, это не так.

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

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

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