【问题标题】:Cython and gcc: can't run compiled programCython 和 gcc:无法运行已编译的程序
【发布时间】:2012-05-25 18:40:34
【问题描述】:

我在 python 到 C 代码的翻译和进一步编译方面遇到了问题。

首先,我安装了MinGW,写了`setup.py?脚本并使用 Cython 将 python 代码(最简单的 helloworld)翻译成 C:

python setup.py build_ext --inplace

然后我尝试编译生成的 .c 文件:

gcc.exe helloworld.c -mdll -IC:\Python27\include -IC:\Python27\PC -LC:\Python27\libs -LC:\Python27\PCbuild -lpython27 -lmsvcr90

在编译过程中没有发生错误,但是当我尝试启动生成的 a.exe 文件时,出现以下错误:

a.exe 不是有效的 Win32 应用程序

我不知道如何解决这个问题。
我正在运行 32 位 Vista。
附言对不起我的英语不好。

【问题讨论】:

    标签: python c gcc mingw cython


    【解决方案1】:

    请参阅 Embedding Cython 上的 Cython wiki 以使用 Cython 创建独立的可执行文件

    【讨论】:

    • 我尝试了cython.py --embed helloworld.py,获得了更大的 .c 文件(1657 行代码,而之前为 1473 行),然后尝试了我帖子中所写的 gcc,但我仍然收到此错误。
    • 终于成功了! gcc.exe helloworld.c -IC:\Python27\include -LC:\Python27\libs
    【解决方案2】:

    编译后的文件不是可执行文件,而是一个库 (dll)。

    Windows 上的 Python 模块通常具有 .pyd 扩展名,因此要么将文件重命名为 helloworld.pyd,要么使用 -o helloworld.pyd 作为编译器的参数。

    那么你应该可以从 python 中import helloworld

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-05
      相关资源
      最近更新 更多