日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 调用 so 库 需要注意的地方

發布時間:2025/7/14 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 库 需要注意的地方的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。