Boost Python 中的跨模块依赖

2023-11-24

假设我有两个 boost python 模块,定义如下。模块A:

class SomeClass {
public:
    SomeClass() {}
    ~SomeClass() {}
};
BOOST_PYTHON_MODULE(A)
{   
    class_<SomeClass>("SomeClass");
}

和模块B:

class AnotherClass {
public:
    AnotherClass() {}
    ~AnotherClass() {}
    void func(SomeClass& sp) {}
};
BOOST_PYTHON_MODULE(B)
{   class_<AnotherClass>("AnotherClass")
        .def("func", &AnotherClass::func)
    ;
}

模块 B 依赖于模块 A(即它使用SomeClass来自模块 A)。现在,我执行以下 python 脚本:

import A
import B
obj1 = A.SomeClass()
obj2 = B.AnotherClass()
obj2.func(obj1)

我收到以下错误:

Traceback (most recent call last):
  File "C:\bladiebla\script.py", line 8, in <module>
    obj2.func(obj1)
ArgumentError: Python argument types in
AnotherClass.func(AnotherClass, SomeClass)
did not match C++ signature:
func(class AnotherClass {lvalue}, class SomeClass)

Python 似乎不会自动在模块之间转换类。有谁知道如何解决这个问题?


我最近刚刚开始摆弄 Boost.Python 并遇到了同样的问题。

查看以下文档的第 6 节:

http://www.boost.org/doc/libs/1_47_0/libs/python/doc/building.html

6.1 - 动态二进制

该库包含一个类型转换注册表。由于一个注册表在所有扩展模块之间共享,因此在一个动态加载的扩展模块中向 Python 公开的类的实例可以传递给在另一个此类模块中公开的函数.

我使用的是静态二进制文件,并遇到了与您相同类型的错误。一旦我更改为动态二进制文件,它就编译并运行良好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Boost Python 中的跨模块依赖 的相关文章

  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • Python:尝试检查有效的电话号码

    我正在尝试编写一个接受以下格式的电话号码的程序XXX XXX XXXX并将条目中的任何字母翻译为其相应的数字 现在我有了这个 如果启动不正确 它将允许您重新输入正确的数字 然后它会翻译输入的原始数字 我该如何解决 def main phon
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • 为美国东部以外地区的 Cloudwatch 警报发送短信?

    AWS 似乎没有为美国东部以外的 SNS 主题订阅者提供 SMS 作为协议 我想连接我的 CloudWatch 警报并在发生故障时接收短信 但无法将其发送到 SMS YES 经过一番挖掘后 我能够让它发挥作用 它比仅仅选择一个主题或输入闹钟
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 如何从没有结尾的管道中读取 python 中的 stdin

    当管道来自 打开 时 不知道正确的名称 我无法从 python 中的标准输入或管道读取数据 文件 我有作为例子管道测试 py import sys import time k 0 try for line in sys stdin k k
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • 您可以在 Python 类型注释中指定方差吗?

    你能发现下面代码中的错误吗 米皮不能 from typing import Dict Any def add items d Dict str Any gt None d foo 5 d Dict str str add items d f
  • Python:元类属性有时会覆盖类属性?

    下面代码的结果让我感到困惑 class MyClass type property def a self return 1 class MyObject object metaclass MyClass a 2 print MyObject
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • Python 的 imp.reload() 函数不起作用?

    这是一个简洁的例子 x py class x var from x py y py class x var from y py test py import imp def write module filename fp open z p
  • Javascript 中的块作用域、函数作用域和局部作用域

    Is 块作用域有时与功能范围 我知道功能范围适用于函数内的所有内容 但不知道 a 到底是什么块作用域 is 对于Javascript来说 是吗 现在推荐使用let const代替var以便日后维护 这是来自Airbnb 风格指南 javas
  • 远程调试Azure网站:未命中断点

    我有一个部署到 Azure 的 ASP NET 网站 我正在使用 VS2013 NET 4 5 1 和 Azure SDK 2 2 我在管理门户中打开了VS2013的远程调试 我可以成功右键单击服务器中 Azure 节点下的网站 然后选择
  • 如何打印 HTML 页面的一部分?

    我有一个 html 页面 我想打印该 html 页面的一部分 我知道打印页面的 javascript 函数 onClick javascript window print return false 但如何打印页面的一部分呢 如果有人有想法
  • 将单键字典列表转换为单个字典

    我有一个单键字典列表 例如 lst 1 A 2 B 3 C 我想简单地将其转换为普通字典 dictionary 1 A 2 B 3 C 最简洁 最有效的方法是什么 您可以使用减少 reduce lambda r d r update d o
  • 将 Winform 应用程序转换为控制台应用程序

    是否有一种快速而肮脏的方法 或 VS 宏 将 WinForms 应用程序转换为控制台应用程序 我有许多此类应用程序不再需要作为 Winforms 应用程序 我想我可以创建一堆新项目并复制粘贴模块和类 但如果只是删除我拥有的单一表单并编辑 删
  • 从URL中获取参数值

    我正在开发一个工具 它可以获取 URL 中的值参数并用它们做一些事情 我的问题是 我似乎无法使用 document location 来显示我想要的具体值 例如 www examplesite com yourname gilgilad 我
  • 在android布局中创建水平虚线

    在我的布局中 我试图绘制一条虚线 为了绘制一条水平线 我在布局文件中定义了一个视图
  • 优化 Karatsuba 实施

    所以 我正在尝试改进 net 4 的一些操作BigInteger类提供 因为操作看起来是二次的 我已经做了一个粗略的 Karatsuba 实现 但它仍然比我预期的要慢 主要问题似乎是 BigInteger 没有提供简单的方法来计算位数 因此
  • 通过 Java 应用程序启动外部 Jar

    目前 我有一个 Java 独立 Swing 应用程序 现在 当用户单击 Swing 应用程序中的按钮时 我想启动另一个 Java 应用程序 例如 calculator jar 我可以知道什么是便携式方法吗 那么它可以在多个操作系统中工作吗
  • 在 MATLAB 中将零对角线添加到矩阵

    假设我有一个矩阵A维度的Nx N 1 在 MATLAB 中 例如 N 5 A 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 我想转型A进入一个NxN matrix B 只需添加零对角线
  • 关于链表中的虚拟节点和指针的说明

    我有以下列表节点类 def init self x self val x self next None 如果我初始化列表l and r如下 l ListNode 1 l next ListNode 4 l next next ListNod
  • 使用 pymongo 连接到 aws 时出现 ServerSelectionTimeoutError

    我正在尝试使用密钥文件连接到 AWS 实例上托管的 MongoDB 我能够通过 ssh 进入实例并连接到数据库 没有任何问题 当我尝试使用 pymongo 从远程位置连接到数据库时 我收到此错误 ServerSelectionTimeout
  • Ipython、jupyter 和内核之间有什么关系?

    就像每次我寻找有关 python 或 R 的答案时 我都会遇到 Ipython Ipython kernel Ipython Notebook jupyter 和 jupyter kernel 的这些含义 并且我实际上了解每个的用途 但我对
  • 如何修复 Heroku imagecreatefromjpeg()

    heroku 报告我一个错误 Call to undefined function imagecreatefromjpeg at line 177 其中第 177 行是 案例 jpg 案例 jpeg image data imagecrea
  • Python如何获取QLineEdit文本?

    你好世界我正在尝试让 QLineEdit 作为用户输入来工作 他们应该输入歌曲名称 输入歌曲名称后 我希望单击播放按钮后开始播放该歌曲 除了他们可以在该文件夹中输入所需歌曲的部分之外 一切正常 问题是我不确定如何制作 QlineEdit 单
  • 使用指针算术计算类型大小的替代方法

    下面的代码是100 可移植的吗 int a 10 size t size of int char a 1 char a No problem here std cout lt
  • 两个表的索引名称相同

    我正在为我们的团队构建一个小型 Mysql 数据库 对于我的数据库中的两个表 我使用了相同的索引名称 性能会受到影响吗 我做了一些测试查询 800 000 多行 到目前为止 一切顺利 索引名称特定于每个表 一张表中不能有两个同名索引 但可以
  • 如何在 Scala 中定义列表的列表?

    我想为以下类型创建一个存储 List List 2 3 1 1 List 2 2 1 但如果我执行以下操作 var y List List 1 0 2 2 List 2 1 1 2 1 然后它创建为 List AnyVal 并在我尝试执行数
  • Boost Python 中的跨模块依赖

    假设我有两个 boost python 模块 定义如下 模块A class SomeClass public SomeClass SomeClass BOOST PYTHON MODULE A class