C python 3.8 调用c语言编程库示例

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)运行结果:(运行截图)

adder

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值