簡體   English   中英

返回第 3 方 pybind 類型

[英]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.

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