2009-04-13 20 views
1

私はこれまでの30分を要していました。ここで私がやっていることはGCCで絶対にうまくいくが、私はTinyCCを使っている。これが混乱しているところだ。まずコード:Pythonのシンボルがtinyccに埋め込まれていると、Pythonのシンボルは定義されていません。

#include <Python.h> 
#include <stdio.h> 
int main(int argc, char*argv[]) 
{ 
    Py_Initialize(); 
    PyRun_SimpleString("print(\"Hello World!\")"); 
    Py_Finalize(); 
    return 0; 
} 

私はそのようにのようなTCCを呼び出します。

tcc -o tinypyembed.exe tiny.c -IC:\Python26\include -LC:\Python26\libs -lpython26 

それは、私は私の知恵の終わりに完全だ大きな脂肪のジャークになり、

tcc: undefined symbol 'Py_Initialize' 
tcc: undefined symbol 'PyRun_SimpleStringFlags' 
tcc: undefined symbol 'Py_Finalize' 

を吐き出します誰かが何が起きているか分かっていれば本当に感謝しています。

友だちにこれを試してもらうと、実際にはWindowsの問題であることがわかりました。これは、Windows上でpythonを使ってtinyccを試してみるかもしれない誰かに警告としてここにとどまるようにしてください。

答えて

3

tiny_impdef.exeを使用して、Python DLLのファイル.defを作成しましたか? Windows用

+0

あなたは何を知っていますか? :Dありがとうございました:D –

+0

リンク時にエラーがありましたか? – ojblass

2

完全なソリューション:

  1. tiny_impdef bk1eのアドバイスに従って

    tiny_impdef.exe c:\WINDOWS\system32\python25.dll

  2. コンパイルリストにpython25.def(またはpython26.def)を追加

    tcc tiny.c python25.def -IC:\Python25\include -LC:\Python25\libs -lpython25

    (Python2.6では25で26を26に置き換えてください)

関連する問題