Я разрабатывал библиотеку C для управления данными и систему типов на основе монад. Все это работает хорошо и прекрасно, однако я хотел бы подключить его к Python, чтобы я мог управлять некоторым GUI и другими подобными вещами.
Вот проблема;
Создание разделяемой библиотеки C с использованием gcc, содержащего библиотеку Python3, и подключение ее к Python. Кажется, я не понимаю ни грамматики, ни требований к компиляции из командной строки (не стесняйтесь упомянуть инструмент, облегчающий эту задачу)
gcc Информация
Использование встроенных спецификаций.
COLLECT_GCC = НКА
COLLECT_LTO_WRAPPER = C: / TDM-GCC-64 / бен /../ libexec / GCC / x86_64-W64-mingw32 / 5.1.0 / LTO-wrapper.exe
Цель: x86_64-w64-mingw32
Настраивается с помощью: ../../../src/gcc-5.1.0/configure --build = x86_64-w64-mingw32 --enable-target = all --enable-languages = ada, c, c ++, fortran , lto, objc, obj-c ++ --enable-libgomp --enable-lto --enable-graphite --enable-cxx-flags = -DWINPTHREAD_STATIC --disable-build-with-cxx --disable-build-poststage1- with-cxx --enable-libstdcxx-debug --enable-threads = posix --enable-версия-определенная-runtime-libs --enable-полностью-динамическая-строка --enable-libstdcxx-threads --enable-libstdcxx- время --with-gnu-ld --disable-werror --disable-nls --disable-win32-registry --prefix = / mingw64tdm --with-local-prefix = / mingw64tdm --with-pkgversion = tdm64-1 --with-bugurl = http://tdm -gcc.tdragon.net / ошибки
Модель потока: posix
gcc версия 5.1.0 (tdm64-1)
Вот мой .c
#include <Python.h>
#include <stdio.h>
extern float testfloat (){
return 2.0;
}
extern int testint(){
return 2;
}
int main(){
return 0;
}
Мой .h для заголовков
extern float testfloat ();
extern int testint ();
и этот .Bat используется для компиляции на gcc
@ECHO OFF
ECHO.
ECHO This is a compilation bat
ECHO.
gcc -fPIC -shared -o testcode.so -I...\AppData\Local\Programs\Python\Python37\include -L...\AppData\Local\Programs\Python\Python37\libs testcode.c -lpython37
gcc -shared -o libtestcode.so testcode.c
PAUSE
CLS
EXIT
Я обычно не использую stackoverflow, поэтому простите за отсутствие формальности в этом посте