2016-01-22 2 views
2

Я пытаюсь создать исполняемый файл в cython, следуя инструкциям здесь: Making an executable in Cython. Однако, я получаю ошибку «неопределенная ссылка на„WinMain @ 16“collect2.exe и мне интересно знать, что причиной этого являетсяСоздание исполняемого файла из кода Cython

Отредактировано:.

В настоящее время я делаю следующие вещи со следующим 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. Запуск из командной строки команды:

Cython primes.pyx --embed

НКУ -DMS_WIN64 -mthreads -mconsole -Wall -О -IC: \ Python34 \ включают -lc: \ Python34 \ ЛИЭС setup.c -lpython34 -o Example.exe

И ошибка, которую я получаю:

«c:/mingw/bin /../ lib/gcc/mingw32/4.8.1 /../../../ libmingw32.a (main.o): (.text.startup + 0xa7): неопределенная ссылка на `WinMain @ 16 '"

Благодарим вас!

+0

См., Если это применимо, http://stackoverflow.com/questions/5259714/undefined-reference-to-winmain16 и/или попробуйте добавить, например, флаг '-mconsole' compile. –

+0

Я пробовал это, но это тоже не сработало :( – littlebluedeer

+0

Я думаю, вы должны отредактировать свой вопрос и более подробно указать, что вы пытаетесь сделать, например команды, используемые для компиляции и ссылки. Также используется команда cython. –

ответ

0

Следующая команда пересборки Cython программу

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

Это было сделано в среде Windows 7 64-битной msys2 с помощью GCC 4.9.1 и 5.3.0 версии 64bit (win32 темы, SEH обработки исключений) и 64-разрядные питона 3.4.

Моя первоначальная мысль была, что будет проблема из-за отсутствия основной() но Cython тихо добавляет один.

+0

Thank вы для этого совета. Какая операционная система вы используете, возможно, потому что она говорит мне, что параметр линии «-municode» не существует – littlebluedeer

+0

Это все еще не работает. – littlebluedeer

+0

@smallfacebigmouth Я не заметил, что у вас был довольно старый компилятор, т.е. 4.8.1. Я думаю, что это плохой подход при работе с Python 3.4, поскольку он не имеет '-municode', как более новую версию. * Python -embed * создает код, который вам нужен поддержка unicode от компилятора. –

Смежные вопросы