1

ですから、私が取り組みたい小さなプロジェクトでPython.hを使い始めようとしていますが、それはかなり/simple/のようです。しかし、始める前に、Python.hの使い方を学びたいと思います。だから私はこの小さな例をオンラインで見つけました。

#include "Python/Python.h"  

int main(int argc, char** argv)  
{  
    Py_Initialize();  
    PyRun_SimpleString("print 'Test'");  
    PyRun_SimpleString("print str(3 + 5)"); 
    Py_Exit(0);  
}

かなり簡単なようです。私が最初に使用したとき

gcc test.cpp

コンパイルするために、私はいくつかの未定義のシンボルを手に入れました。私はすぐに私が使うべきだとわかりました

-lpython2.7

それから私も使用できることがわかりました

-L/Library/Frameworks/Python.framework/Versions/2.7/lib/

それは機能しませんでした(/Library/Frameworks/Python/Versions/2.7/lib/が存在することを確認しました)行き詰まりました、どうすればよいですか?私は得る

Undefined symbols:
  "_Py_Initialize", referenced from:
      _main in ccoUOSlc.o
  "_PyRun_SimpleStringFlags", referenced from:
      _main in ccoUOSlc.o
      _main in ccoUOSlc.o
  "___gxx_personality_v0", referenced from:
      _main in ccoUOSlc.o
      CIE in ccoUOSlc.o
  "_Py_Exit", referenced from:
      _main in ccoUOSlc.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

編集:-Framework引数を使用してみて、-Lの後に-l python2.7引数を追加しようとすると、次のようになります。

Undefined symbols:
  "___gxx_personality_v0", referenced from:
      _main in ccfvtJ4j.o
      CIE in ccfvtJ4j.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

それで?

4

1 に答える 1

4

パスに基づいているように見える OS X で Python フレームワークのインストールを使用している場合は-framework、Apple コンパイラ ドライバへの引数を使用できます。

cc test.cpp -framework Python

または、ディレクトリ パスとライブラリ名を明示的に指定することもできます。

cc test.cpp -L /Library/Frameworks/Python.framework/Versions/2.7/lib/ -l python2.7

更新: コメント ( Xcode 3.2.6、 ) で報告した構成では、 のバリアントgcc-4.2を明示的に呼び出す必要があるようです。また:c++gcc

g++ test.cpp -framework Python

また

c++ test.cpp -framework Python

動作するはずです。

于 2012-10-29T05:49:54.973 に答える