如何在SWIG中包装一个C-Library,它通常在C编译期间被链接?

时间:2015-07-29 11:38:46

标签: python c shared-libraries wrapper swig

给定一个C库,如果我想使用它的函数,它必须在编译期间链接。我想使用SWIG在Python中访问这些函数。我只能找到使用SWIG包装C-Code(example.c)的示例和介绍,没有方法如何包装动态库(example.so)。

1 个答案:

答案 0 :(得分:1)

使.so(或.a)库案例工作所需要做的就是在执行示例构建过程的编译步骤时适当地链接库。您仍然需要编译生成的example_wrap.c,这是您可以链接的东西。

从SWIG文档中进行了修改:

serialport_DataRecieved

实际上,您也可以在编译时链接器步骤中跳过此步骤,并在运行时使用$ swig -python example.i $ gcc -O2 -fPIC -c example.c $ gcc -O2 -fPIC -c example_wrap.c -I/usr/local/include/python2.5 $ gcc -shared example_wrap.o -o _example.so -lmylib.so ,而不是在模块的Python部分中注入一些额外的代码,该部分在SWIG的共享对象加载之前调用dlopen。