python 调用 so 库 需要注意的地方
生活随笔
收集整理的這篇文章主要介紹了
python 调用 so 库 需要注意的地方
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
? ? ?使用C++而不是C來編寫so庫時往往會遇到一些問題,這里著重探討一下linux環境下C++編寫so庫
及python調用so庫需要注意的地方。
test.cc
#include<iostream> extern "C"{ // 重要,因為使用g++編譯時函數名會改變,比方print_msg(const char*)// 會編譯成函數名 print_msg_char,這會導致python調用這個函數的時候// 找不到對應的函數名,這有加了 extern "C",才會以C語言的方式進行// 編譯,這樣不會改變函數名字void print_msg(const char* s){std::cout<<s<<std::endl;}int add_Integer(int a,int b){return a+b;} }編譯命令:
g++ -shared test.cc -o test.so -fPIC
-fPIC 的參數不能丟,PIC(Position Independent Code)表示生成代碼與位置無關,這樣才能
達到動態鏈接的目的。
script.py
#! /usr/bin/env/python # _*_ encoding : utf-8 _*_from ctypes import *import ossotest = cdll.LoadLibrary(os.getcwd()+ "/test.so")sotest.print_msg("hello,my shared object used by python!")print("4+5=%s" %sotest.add_Integer(4,5))?
轉載于:https://my.oschina.net/u/2309100/blog/818777
總結
以上是生活随笔為你收集整理的python 调用 so 库 需要注意的地方的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网站后端_Flask-第三方库.利用Fl
- 下一篇: Java编程的逻辑 (62) - 神奇的