我的目标是从Python代码生成so库,然后用C语言调用它。
add.py
def add(x, y):
return x+y
使用命令:python -m nuitka --module add.py
并获取add.so
使用main. c调用add.so:
#include <stdio.h>
#include <dlfcn.h>
int main()
{
void* handle = dlopen("./add.so", RTLD_LAZY);
if (!handle) {
fputs (dlerror(), stderr);
exit(1);
}
int (*add)(int a, int b);
add = dlsym(handle, "add");
if(dlerror()) {
perror("dlsym error");
abort();
}
int sum = add(7, 8);
printf("7+8 = %d\n", sum);
dlclose(handle);
return 0;
}
然后使用以下代码编译main. c:gcc -o main main.c -ldl
结果为:
add.so:未定义的符号:PyExc_系统错误
1条答案
按热度按时间vngu2lb81#
添加下面的代码可以解决“未定义符号:PyExc_系统错误”
g++编译参数
但我还是有问题
发现
0000000000012430 T PyInit_添加
因此将代码更改为
仍然失败,总是得到不同的大数值: