以前也有涉猎,但是没有深入研究,python的C的互相调用可以RPC等远程方式,这种方式语言无关。
如果直接调用,原理一般都是在python方面封装或者在C方面封装。
对于在Python方面封装,现在我只知道ctypes,需要针对每个C函数写一个Python函数,流程都是构造参数,设置返回值之类,重复且繁琐,但是可以丝毫不修改C那边的dll,然后你给别人发布你封装好的python函数就好了。另外,ctypes构造结构体很复杂,不怎么推荐。
在C方面封装,也就是源码前面加一个#include "python.h".编译成dll,Python就可以直接import了,或者boost python,这需要改动dll的源码重新编译,对于已经存在的第三方dll,需要套一层自己的壳,写一个c文件套一层,写完后就利用swig完成剩余的事情,如果第三方dll同时也提供了lib静态链接库,这层壳就不用了,就直接用swig吧。
最后,我没有用这种方法做过大型项目,听说wxpython就是swig搞的。
不知道你说的swig遇到的困难是什么,我觉得挺好用,swig自带文档和许多Python的例子。