python可以利用SO的方式去調用C++中的函數,但是需要一種調試方案來進行python和C++的聯合調試,效果是直接在c++代碼中打斷點,然後python在進行c++so調用的時候,直接進入到斷點處:
testlib.cpp
call_cpp.py
setup.py
将setup.py和testlib.cpp放到同一個目錄下,執行python setup.py install

可以看到CFuncEntry.so已經生成,這時執行gdb –args python-dbg call_cpp.py可以進入到gdb調試模式:
可能的問題:
1. python-dbg有可能沒有安裝,需要執行sudo apt-get install python-dbg進行安裝;
2. 直接使用g++ -o CFuncEntry.so testlib.cpp -g -shared -fpic -DEBUG -lpython2.7_d 的方式生成的so會出現如下錯誤:
undefined symbol: Py_InitModule4_64
3. 直接用g++進行編譯,生成so,需要加上Py_DEBUG參數:g++ -o CFuncEntry.so testlib.cpp -g -shared -fpic -DEBUG -lpython2.7_d -DPy_DEBUG
參考資料:
1. http://hustoknow.blogspot.com/2013/06/why-your-python-program-cant-start-when.html
2. https://blog.csdn.net/mydear_11000/article/details/52252363