python开发效率高,实际项目时python搭建整个项目框架,关键模块用c编写,是个不错的办法!
c函数对python的接口要按规则写。
比如一个阶乘c函数的头文件定义:
dll.h:
#ifndef LIB_H
#define LIB_H
extern "C" long __declspec(dllexport)factorial(int n); //接口定义
#endif
dllmain.c:
#include "dll.h"
long factorial(int n){
if(n == 1)return 1;
return n * factorial(n - 1);
}
然后用gcc编译成dll文件。
gcc -Wall -shared dllmain.c -o dllmain.dll
或者 gcc --shared dllmain.c -o dllmain.dll
刚开始gcc提示找不到cc1.exe,在dev-cpp mingw32中有个cc1plus.exe的文件,改成cc1.exe拷贝到gcc bin目录中即可。
生成的dll就可以使用了。
from ctypes import *
#libtest=CDLL("dllmain.dll")
libtest=cdll.LoadLibrary("dllmain.dll")
print libtest.factorial(10)
分享到:
相关推荐
为了方便大家使用MinGW(GCC)+_boost.python,特意只做了三个dll,可以很方便地将c++代码转为python模块. libboost_python-mgw45-1_49.dll libboost_python-mgw45-d-1_49.dll python27.dll 这三个文件我已放在资源...
该工程使用python脚本调用c代码实现wav音频...1.gcc编译生成动态库speed_change.dll:gcc -o speed_change.dll -shared -fPIC runsonic.c sonic.c sonic.h。 2.使用python代码speedup.py调用speed_change.dll进行变速。
在MinGW编译时报错缺少的一个文件,下载该文件后将其放在D:\MinGW\libexec\gcc\mingw32\9.2.0\目录下即可(该目录就是最初安装MinGW的目录
本压缩包包含:MinGW(已整合官网的gcc-core-3.3.3、gcc-g++-3.3.3、mingw-runtime-3.8、w32api-3.5和binutils-2.13.90)、libcurl-7.36.0(curl-7.36.0)、SDL-1.2.15、Python27、zlib128-dll、gsoap-2.7、openssl-...
2、编译c代码,最后生成Python可执行的.so文件 (1)gcc -c linuxany.c,将生成一个linuxany.o文件 (2)gcc -shared linuxany.c -o linuxany.so,将生成一个linuxany.so文件 3、在Python中调用
C代码编译为.so, //test.c #include ... python使用ctypes.CDLL调用.so import ctypes C_lib = ctypes.CDLL(“./test.so”) C_lib.test() 一般参数的传递 不需要修改的参数:类型匹配即可
gcc a.c -fpic -shared -o lib.so 通过上面编译成so文件 利用ctypes模块。 from ctypes import cdll a=cdll.LoadLibrary(./lib.so) a.say() 能过上面代码测试通过。 更多关于Python相关内容感兴趣的读者可查看本...
首先我们需要将编写好的c程序文件编译为动态库文件(后缀名为.so) 使用下面的命令: gcc 原文件名.c -shared -o 新文件名.so 然后在python程序中导入模块:from ctypes import * 在python中引入c动态库,并定义一个...
更改main.py中的第四行,如CDLL(“ sys_file.dll的路径”)-示例:CDLL(C:/Users//Desktop/Simple-Notepad/sys_file.dll) 要启动程序:python main.py LINUX 使用python 32位 更改第四行,如Makefile中的gcc ...
SharedLibrary: 在 POSIX 系统上编译动态链接库,在 Windows 平台上编译 DLL。 这个简单的 SConstruct 的配置文件从一个侧面说明了使用 SCons 来建造程序是多么的简单。 在实际的项目开发中,程序的建造规则远比 ...
c语言里:c_p.c #include void get_str_list(int n, char *b[2]) { printf("in c start");...gcc -o hello1.so -shared -fPIC c_p.c python里:p_c.py from ctypes import * ll = cdll.LoadLibrary lib = l
编译<gcc> 运行<./(파일경로)> Python,C파일 C파이썬에서썬에서리눅스에서는.a(정에서는이브러리)나.so(동적라이브러리)로한다。 gcc -c -fPIC test.c gcc -shared -fPIC -o test.so test.o from ...
matlab图形图像二值化代码设置 - 适用于 ...将编译的anigauss.dll存储在anigauss文件夹中 cd 到项目的根目录和pip install -r requirements.txt 执行: 要执行代码,您需要指定以下参数: --image_path -
DEEPBIND培训脚本 该源代码树是DeepBind的《自然生物技术》补充软件... 您需要Visual C ++ 2012来编译内部库:libs / smat / vcproj / smat.sln(打开并构建)libs / deepity / vcproj / deepity.sln(打开并构建)l
很棒,但是它们没有Python软件包,并且软件包管理器不在Windows XP上运行,这使我担心其余的库。 为什么不交叉编译? 实际上,这是我第二次尝试构建供Windows使用的流行库。 最初的想法(效果很好)是在Linux上交
为了抑制LuaBind的编译时间最好是将其编译为一个库. 这意味着你要不编译并连接LuaBind 库要不就添加其所有源码到你的工程里面.你必须确保LuaBind目录在你的编译器包含目录中. LuaBind需要Boost 1.32.0 或者 1.33.0 ...