Python3 中提供了 ctypes 模块,它支持与 C 兼容的数据类型,可以用来加载 C/C++ 动态库。
C代码
test.h
1
|
extern int add(int, int);
|
test.c
1
2
3
4
5
|
#include "test.h"
int add(int arg1, int arg2)
{
return arg1 + arg2;
}
|
C++代码
test.h
1
2
3
4
5
6
7
8
9
|
class Foo
{
public:
int add(int arg1, int arg2)
{
return arg1 + arg2;
}
};
extern "C" int add_wrapper(int, int);
|
test.cpp
1
2
3
4
5
6
|
#include "test.h"
int add_wrapper(int arg1, int arg2)
{
Foo obj;
return obj.add(arg1, arg2);
}
|
生成动态库
1
2
3
|
# c语言: gcc -c -fPIC -o test.o test.c
gcc -c -fPIC -o test.o test.cpp
gcc -shared -o libtest.so test.o
|
python中调用
1
2
3
|
from ctypes import cdll
lib = cdll.LoadLibrary("./libtest.so")
print(lib.add_wrapper(2, 3))
|
文章作者
Payne Xu
上次更新
2024-10-26
(78e6526)
原始文档
查看本文 Markdown 版本 »
许可协议
CC BY-NC-ND 4.0