为Python3 Windows编译C共享库

时间:2018-11-09 17:01:32

标签: python c gcc compilation linker

我一直在设计一个C库来管理数据和一个基于monad的类型系统。所有这些本身都很好并且很花哨,但是我想将其连接到Python,以便我可以驱动一些GUI和其他类似的东西。

这里是问题;

使用包含Python3库的gcc创建C共享库,并将其挂接到Python中。看来我既不了解语法,也不了解命令行编译的要求(随意提一个工具可以使此操作更容易)

gcc信息

使用内置规格。 COLLECT_GCC = gcc COLLECT_LTO_WRAPPER = C:/ TDM-GCC-64 / bin /../ 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-targets = 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-version-specific-runtime-libs --enable-fully-dynamic-string --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/bugs 螺纹型号: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,因此请原谅我缺乏正式性

0 个答案:

没有答案