从Cython代码创建可执行文件

时间:2016-01-22 00:18:12

标签: python compilation executable cython

我正在尝试在cython中创建一个可执行文件,遵循以下指示: Making an executable in Cython。 但是,我一直收到错误“未定义引用'WinMain @ 16'colle2.exe,我很想知道原因是什么。

编辑:

我目前正在使用以下Cython文件执行以下操作:

cpdef primes(int kmax):
cdef int n, k, i
cdef int p[1000]
result = []
if kmax > 1000:
    kmax = 1000
k = 0
n = 2
while k < kmax:
    i = 0
    while i < k and n % p[i] != 0:
        i = i + 1
    if i == k:
        p[k] = n
        k = k + 1
        result.append(n)
    n = n + 1
return result
  1. 在命令行中运行命令:
  2. cython primes.pyx --embed

    gcc -DMS_WIN64 -mthreads -mconsole -Wall -O -IC:\ Python34 \ include -LC:\ Python34 \ libs setup.c -lpython34 -o example.exe

    我得到的错误是:

    “C:/ MinGW的/ bin中/../ LIB / GCC /的mingw32 / 4.8.1 /../../../ libmingw32.a(main.o),此:( text.startup + 0xa7)。 :未定义引用`WinMain @ 16'“

    谢天谢地!

1 个答案:

答案 0 :(得分:0)

以下命令编译了你的cython程序

gcc -municode -DMS_WIN64 -O -Wall -I /c/devel/Python34/include -L /c/devel/Python34/libs/ primes.c -lpython34 -o example.exe

这是在使用gcc 4.9.1和5.3.0 64位版本(win32线程,SEH异常处理)和64位python 3.4的Windows 7 64位msys2环境中完成的。

我最初的想法是因为缺少 main()会出现问题,但 cython 会默默地添加一个。