我想使用一个共享库(带有python ctypes),它期望在使用该共享库的程序中定义一些符号。
在以下示例中,
var
定义于
test.c
虽然
nm libadd.so
表明
风险值
未定义;
#include <stdio.h>
extern int var;
int add(int a, int b) {
return (a + b + var);
}
gcc -c -Wall -Werror -fpic libadd.c
gcc -shared -o libadd.so libadd.o
#include <stdio.h>
#include "libadd.h"
int var = 1;
int main(void) {
printf("%d", add(1,2));
return 0;
}
gcc -L/path/to/libadd -Wall -o test test.c -ladd
类似地,如何使用python ctypes做到这一点;
from ctypes import *
sharedlib = CDLL("sharedlib/libadd.so", mode = RTLD_GLOBAL)
print( sharedlib.add(1,2) )
OSError: sharedlib/libadd.so: undefined symbol: var