【问题标题】:Trying to embed python into tinycc, says python symbols are undefined试图将 python 嵌入到 tinycc 中,说 python 符号未定义
【发布时间】:2009-04-13 04:32:36
【问题描述】:

在过去的半个小时里,我一直在寻找解决方案,而一切都涉及到 GCC。我在这里所做的工作与 GCC 完全一致,但是我使用的是 TinyCC,这就是我感到困惑的地方。先上代码:

#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 的人的警告。

【问题讨论】:

    标签: python c compilation


    【解决方案1】:

    您是否使用 tiny_impdef.exe 为 Python DLL 创建了 .def 文件?

    【讨论】:

    • 你知道什么! :D 非常感谢:D
    【解决方案2】:

    Windows 的完整解决方案:

    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)

    【讨论】:

      猜你喜欢
      • 2011-06-13
      • 2012-08-04
      • 1970-01-01
      • 2012-08-06
      • 2016-02-03
      • 1970-01-01
      • 2015-01-24
      • 2019-03-25
      • 1970-01-01
      相关资源
      最近更新 更多