11

pythonを使用してソースコードfoo.pyをCにコンパイルしようとしていますcython

foo.py

print "Hello World"

私が実行しているコマンドはですcython foo.py

問題は、を使用してfoo.cをコンパイルするgccと、次のエラーが発生することです。

undefined reference to 'main'

4

3 に答える 3

23

(Cython を使用して) Python から C にコードを変換すると、共有オブジェクトにコンパイルできる C コードに変換されます。実行可能にするには、cython 変換コマンドに「--embed」を追加する必要があります。このフラグは必要な「メイン」関数を追加するため、c コードを実行可能ファイルにコンパイルできます。.soexec を実行するには、python ランタイム ライブラリが必要になることに注意してください。

于 2010-12-12T15:07:04.880 に答える
10

Cython のドキュメントを読んでください。これにより、(うまくいけば) Cython とは何か、そうでないものもわかります。Cython は、共有オブジェクト/dll である Python 拡張機能 (汎用の Python-to-C コンパイラーではない) を作成するためのものです。main動的に読み込まれるライブラリには、スタンドアロン プログラムのような機能はありませんが、コンパイラは最終的に実行可能ファイルをリンクしていると想定します。それ以外の場合は、フラグを介して伝える必要があります ( -sharedmethinks ですが、Cython のドキュメントを参照してください)。さらに良いのは、自分でコンパイルせずに a を使用することsetup.pyです (もう一度、Cython のドキュメントを読んでください)。

于 2010-12-12T13:24:31.273 に答える
0

通常の方法は、distutils を使用して cython で生成されたファイルをコンパイルすることです。これにより、移植可能な方法で必要なすべてのインクルード ディレクトリも提供されます。

于 2010-12-12T16:03:59.880 に答える