Я буквально провел последние полчаса, чтобы найти решение этого, и все включает 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'
Я полностью в своем уме и действительно ценю это, если кто-то знает, что случилось.
Попросив друга попробовать это, я обнаружил, что на самом деле это проблема с окнами. Пусть это останется здесь как предупреждение для всех, кто может попробовать tinycc с python на окнах.
Используете ли вы tiny_impdef.exe
для создания файла .def
для библиотеки Python?
Полное решение для Windows:
tiny_impdef согласно совету bk1e
tiny_impdef.exe c:\WINDOWS\system32\python25.dll
добавить python25.def(или python26.def) в список компиляции
tcc tiny.c python25.def -IC:\Python25\include -LC:\Python25\libs -lpython25
(замените 25 на 26 для Python2.6)