Cpython3.8 调用c语言编程库示例
(1) adder.c
/*adder.c */ #if BUILDING_DLL #define DLLIMPORT __declspec(dllexport) #else #define DLLIMPORT __declspec(dllimport) #endif DLLIMPORT int add_int( int n1, int n2){ return n1+n2; } DLLIMPORT float add_float( float f1, float f2){ return f1+f2; }
(2) make.bat 运行: make adder 见运行截图.
@echo off rem make.bat gcc -c %1.c -o %1.o gcc -shared %1.o -o %1.dll del %1.o
gcc -fPIC -shared adder.c -o adder.so
(3) add.py
''' Cpython3.8 调用c语言编程库示例 Cpython3.8 调用adder.c 编译==>adder.dll filename: add.py ''' ''' /* filename: adder.c 编译1: adder.dll gcc -c adder.c -o adder.o gcc -shared adder.o -o adder.dll del adder.o 编译2: adder.so gcc -fPIC -shared adder.c -o adder.so */ DLLIMPORT int add_int( int n1, int n2){ return n1+n2; } DLLIMPORT float add_float( float f1, float f2){ return f1+f2; } ''' from ctypes import c_float,cdll #load the shared object file adder = cdll.LoadLibrary('./adder.dll') ''' 另一种方式 gcc -fPIC -shared adder.c -o adder.so adder = cdll.LoadLibrary('./adder.so') ''' #Find sum of integers add_int = adder.add_int sum1 = add_int(4,5) print ("Sum of 4 and 5 = " + str(sum1)) print( f'4+5={sum1}') #Find sum of floats a = c_float(5.5) b = c_float(4.1) add_float = adder.add_float add_float.restype = c_float print ("Sum of 5.5 and 4.1 = ", str(add_float(a, b))) def addf(a,b): return adder.add_float(c_float(a),c_float(b)) f1,f2 = 5.5,4.1 print(f'{f1}+{f2}={addf(f1,f2)}') #eof
(4)运行结果:(运行截图)
C python 3.8 调用c语言编程库示例
最新推荐文章于 2024-02-23 11:08:17 发布