[英]Return a 3rd party pybind type
我的 C++ 庫依賴於具有自身綁定的第三方 C++ 庫。
我綁定了一個使用struct
公開其成員的def_readwrite
。 它的一個成員是來自第 3 方庫的類型。
基本上我有:
struct MyStruct {
ClassFromThirdParty member{};
}
py::class_<MyStruct>(m, "MyStruct")
.def_readwrite("member", &MyStruct::member)
在 Python 中,我嘗試:
from my_bindings import MyStruct
obj = MyStruct()
print(obj.member)
但這會TypeError: Unable to convert function return value to a Python type!
.
還值得注意的是,如果我這樣做:
import ThirdPartyLibrary
from my_bindings import MyStruct
obj = MyStruct()
print(obj.member)
沒有出現錯誤。 但我不喜歡這個解決方案,因為 Python 用戶將不得不導入ThirdPartyLibrary
,即使他們並不明確需要它。
如何編寫我的綁定以使第一個 Python 片段有效?
PS:有問題的第三方綁定可以在這里找到。 在沒有一般性答案的情況下,我也很樂意聽到特別是與該圖書館相關的答案。
它在 pybind11 中與在 Python 中相同——您需要先導入類,然后才能依賴它們。
添加py::module::import("pydrake.math");
在嘗試定義在PYBIND11_MODULE
上運行的pydrake.math.RigidTransform
綁定作為 C++ 參數類型或 C++ 返回值類型之前添加到 PYBIND11_MODULE。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.