2011-01-13 3 views
0

J'ai du code écrit en C++ 0x que je veux exposer à Python 2.7 en tant qu'extension.Compiler des extensions Python avec VC2010

Puisqu'il utilise plusieurs fonctionnalités C++ 0x, je préfère ne pas le réécrire en C++ 03, donc je suis obligé d'utiliser VC2010. Cependant, l'installation par défaut de Python 2.7 est compilée avec VC2008.

J'ai trouvé this post qui explique comment forcer distutils à utiliser VC2010, mais un commentateur souligne que cela se traduira par un conflit de DLL entre msvcr90.dll (lié par l'interpréteur) et msvcr100.dll (lié par l'extension) .

Existe-t-il un moyen de compiler l'extension dans VC2010 sans avoir à recompiler Python?

(j'ai commencé la programmation sous Windows que récemment, donc je n'ai pas exactement la manière dont dynamique liaison fonctionne il)

Répondre

2

Non, il n'y a pas.

Comme vous l'avez déjà compris, lorsque vous compilez quelque chose avec le jeu d'outils VS2010, il est associé à msvcr100.dll. Depuis Python liens avec msvcr90.dll, vous obtiendrez des surprises désagréables lors du mélange de ceux dans la même application.

Votre meilleure option pour l'instant est probablement d'arrêter d'utiliser toutes les fonctionnalités C++ 0x et de compiler votre extension avec VS2008 ou mingw.

Si c'est quelque chose que vous n'avez pas l'intention de distribuer et que c'est pour jouer seulement, compiler Python en utilisant VS2010 est la seule option.

Questions connexes