0

拡張機能として Python 2.7 に公開したい C++0x で書かれたコードがいくつかあります。

いくつかの C++0x 機能を使用しているため、C++03 で書き直したくないので、VC2010 を使用せざるを得ません。ただし、デフォルトの Python 2.7 インストールは VC2008 でコンパイルされています。

distutils に強制的に VC2010 を使用させる方法を説明しているこの投稿を見つけましたが、これにより msvcr90.dll (インタープリターによってリンクされている) と msvcr100.dll (拡張によってリンクされている) の間で DLL の衝突が発生するというコメント投稿者がいます。

Python を再コンパイルせずに VC2010 で拡張機能をコンパイルする方法はありますか?

(私は最近 Windows でプログラミングを始めたばかりなので、そこで動的リンクがどのように機能するかを正確に理解していません)

4

1 に答える 1

2

いいえ、ありません。

すでにわかっているように、VS2010 ツールセットで何かをコンパイルすると、msvcr100.dll. Python は とリンクしてmsvcr90.dllいるため、同じアプリケーション内でそれらを混在させると、不快な驚きが生じます。

現時点での最善の選択肢は、おそらく C++0x 機能の使用を停止し、拡張機能を VS2008 または mingw でコンパイルすることです。

これが配布するつもりがなく、ただ遊んでみるだけのものである場合、VS2010 を使用して Python をコンパイルすることが唯一のオプションです。

于 2011-04-18T09:05:50.543 に答える