代码
C代码:test.c
// test.c
// gcc -shared -o test.so test.c
#include <stdio.h>
#include <stdlib.h>
int add(int a, int b) {
return a+b ;
}
int sub(int a, int b) {
return a-b ;
}
void prnt(const char * sss) {
printf("%s\n", sss) ;
}
python代码:test.py
#!/usr/bin/env python3.9
# -*- coding: utf-8 -*-
import ctypes
import io
import os
SoPath="./test.so"
libso = None
def parse_so() :
global libso
if libso is not None:
return libso
libso = ctypes.CDLL(SoPath)
libso.add.argtypes = [ctypes.c_int, ctypes.c_int]
libso.add.restype = ctypes.c_int
libso.sub.argtypes = [ctypes.c_int, ctypes.c_int]
libso.sub.restype = ctypes.c_int
libso.prnt.argtypes = [ctypes.c_char_p]
return libso
if __name__ == "__main__" :
libso = parse_so()
ret = libso.add(2, 3)
print(ret)
ret = libso.sub(10, 3)
print(ret)
libso.prnt(b"just print")
编译和测试

发表回复