1

私はcythonの初心者なので、ここで明らかな何かが欠けている場合はご容赦ください。パフォーマンスを向上させるためにPythonで使用されるc拡張機能を構築しようとしています。関数の束を備えたfc.pyモジュールがあり、dsutilsを使用してwin64で実行しているcythonを介して.dllを生成しようとしています:

c:\python26\python c:\cythontest\setup.py build_ext --inplace

C:\Python26\Lib\distutils に dsutils.cfg があります。必要に応じて、disutils.cfg には次の構成設定があります。

[build]
compiler = mingw32

私の startup.py は次のようになります。

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

ext_modules = [Extension('fc', [r'C:\cythonTest\fc.pyx'])]

setup(
  name = 'FC Extensions',
  cmdclass = {'build_ext': build_ext},
  ext_modules = ext_modules
)

コマンド ラインの出力は次のようになります。

C:\python26\python C:\cythontest\setup.py build_ext --inplace
running build_ext
cythoning C:\cythonTest\fc.pyx to C:\cythonTest\fc.c
building 'FC' extension
C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Ic:\python26\include -Ic:\pytho
n26\PC -c C:\cythonTest\fc.c -o c:\cythontest\fc.o

ターゲット/ホスト amdwin64 タイプのビルド用の最新バージョンの mingw があります。win64用のpython26用のcythonの最新バージョンがあります。Cython は、エラーのない fc.c を提供してくれます。型変換に関するいくつかの警告のみが表示されます。さらに、.dll を提供する代わりに、fc.def ファイルと fc.o ファイルを生成します。エラーは発生しません。スレッドで、必要に応じて .so または .dll が自動的に作成されることがわかりましたが、これは発生していません。

4

2 に答える 2

1

最後に、win64 用の拡張機能をビルドすることができました。どうやら、VC 2010 Express をお持ちの場合は、モジュールのコンパイルに msvc9compiler を使用するように disuilts を微調整できます。詳細はこちらをご覧ください。これを公開してくれた nukeitdotorg の人たち、そしてヒントをくれた JF Sebastian に感謝します。

于 2011-03-15T04:46:31.667 に答える
0

でコンパイルしようとしましたか

python setup.py build --compiler=mingw32

?

于 2011-03-20T22:29:45.617 に答える