Наконец, после долгой вечной борьбы я нашел решение.Спасибо Джошуа за большую поддержку.
В коде .PYX есть небольшая модификация.Похоже, что мы должны определить все внутри функции, чтобы при преобразовании кода в язык C в нем была основная функция.
Итак, первый шаг - это .PYX, отредактированный как:
from tkinter import Tk
cdef public void function():
root = Tk()
root.mainloop()
if __name__ == "__main__":
function()
Затем я использовал следующую команду для генерации файла заголовка (.h) и программный файл C
python -m cython test.pyx --embed
Это хитрость:
Перейдите к созданному программному файлу C и найдитефункцию wmain и удалите из нее "w".Или вы можете просто нажать Ctrl + F для поиска wmain и заменить его экземпляры на main.
Например, в моей программе был только один экземпляр wmain.Я изменил это на главное.Это похоже на код, показанный ниже.Просто измените wmain на main.
#if PY_MAJOR_VERSION < 3
int main(int argc, char** argv) {
#elif defined(WIN32) || defined(MS_WINDOWS)
int wmain(int argc, wchar_t **argv)
Затем я использовал команду GCC для генерации исполняемого файла.Команда выглядит следующим образом.Я не понимаю, почему это работает.Но это так.
x86_64-w64-mingw32-gcc-8.1.0 -mconsole -DSIZEOF_VOID_P=8 -DMS_WIN64 C:/Users/Siva/Desktop/Scripts/CYTHON/test.c -IC:/"Program Files"/Python37/include -LC:/"Program Files"/Python37/libs -lpython37 -o output
Я только хотел бы, чтобы кто-нибудь объяснил, почему подход работает.