簡體   English   中英

pybind11 方法如何最終調用共享庫中的函數?

[英]How does pybind11 methods end up calling functions from the shared library?

我可以做出盡可能多的構建系統生成共享 object 和 Python 模塊作為共享 object 的代理。 但是 Python 運行時如何最終對生成的共享 object 進行dlopen並綁定 Python 方法調用到共享庫中的相應函數?

我還在Python 的導入系統中找到了關於共享庫的參考,但除此之外沒有其他內容。 CPython 是否將模塊路徑中的.so文件視為 Python 模塊?

import module Python 將查找具有各種擴展名的文件,這些文件可能是 python 模塊。 這可以是module.py ,也可以是module.so (在 Linux 上)或module.pyd (在 Windows 上)。

加載共享 object 時,Python 將像任何動態庫一樣加載它,然后調用模塊的 init 方法:它必須命名為PyInit_{module_name_here}並導出到共享庫中。

你可以在這里閱讀更多關於它的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM