auto_ptr 与 swig

2023-12-12

我正在尝试包装一个使用 auto_ptr 的 C++ 库。我正在使用痛饮 并想要生成 python 绑定。我看过 swig 文档中关于如何将 swig 与智能指针一起使用的部分here。但我无法让它发挥作用。

Swig 生成想要使用 const 初始化 auto_ptr 的代码 引用,但 auto_ptr 用非常量定义了复制构造函数 参考例如auto_ptr(auto_ptr &).生成的 代码不会使用“丢弃 const 限定符”进行编译。当我手动 删除 const 限定符,代码可以正常编译。

我看过很多邮件列表条目,但没有任何帮助。有人可以吗 为我提供一个工作示例。我的非工作样本在这里:

%module auto_ptr_test
%{
#include <memory>
#include <iostream>
using namespace std;
%}
namespace std {
template <class T>
class auto_ptr {
    auto_ptr();
    auto_ptr(auto_ptr &);
    T *operator->() const;
};
}

%inline %{
class Test {
Test() {
    cout << "Test()" << endl;
}
public:
static std::auto_ptr<Test> create() const {
    return auto_ptr<Test>(new Test());
}
void greet() {
    cout << "hello" << endl;
}
};
%}

%template () std::auto_ptr<Test>;

我使用 cmake 和以下 CMakeLists.txt 编译它:

cmake_minimum_required(VERSION 2.8)
find_package(SWIG REQUIRED)
include(${SWIG_USE_FILE})

FIND_PACKAGE(PythonLibs)
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})

INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})

SET(CMAKE_SWIG_FLAGS "")

SET_SOURCE_FILES_PROPERTIES(auto_ptr_test.i PROPERTIES CPLUSPLUS ON)
SWIG_ADD_MODULE(auto_ptr_test python auto_ptr_test.i)
SWIG_LINK_LIBRARIES(auto_ptr_test ${PYTHON_LIBRARIES})

我不相信您能够成功地将这段代码包装在 SWIG 中。问题在于 auto_ptr 在复制时会更改所有权。这就是为什么它要求复制构造函数没有 const。 SWIG 在内部管理对象所有权的方式意味着,如果没有大量自定义 SWIG 代码,您不太可能获得所需的所有权行为。

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

auto_ptr 与 swig 的相关文章

  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 无法在 Python 3 中导入 cProfile

    我试图将 cProfile 模块导入 Python 3 3 0 但出现以下错误 Traceback most recent call last File
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 如何在 Python 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 类型错误:预期单个张量时的张量列表 - 将 const 与 tf.random_normal 一起使用时

    我有以下 TensorFlow 代码 tf constant tf random normal time step batch size 1 1 我正进入 状态TypeError List of Tensors when single Te
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • Rocket UniData/UniVerse:ODBC 无法分配足够的内存

    每当我尝试使用pyodbc连接到 Rocket UniData UniVerse 数据时我不断遇到错误 pyodbc Error 00000 00000 Rocket U2 U2ODBC 0302810 Unable to allocate

随机推荐

  • Facebook OAuthException:(#1)

    我有一些将图像上传到用户个人资料的应用程序 几个小时前 所有应用程序都工作正常 但现在请求上传时 会出现此错误 Fatal error Uncaught OAuthException 1 An unknown error occurred
  • WordPress插件如何添加内容?

    这可能是一个奇怪的问题 当我添加 Facebook Like Button 和 Gigpress 等插件时 它们提供了在每个单页博客文章之前或之后插入内容的选项 例如 我将 Gigpress 和 FB Like 按钮设置为在我的帖子文本下方
  • Oracle 触发器每月检查约束

    只是想知道是否可以创建一个触发器来每月检查指定的约束基础 eg 桌租 ID 会员 书籍 1 约翰 童话 2 约翰 摩擦 3 约翰 漫画 4 约翰 杂志 限制 会员每月只允许借阅4本书 我想过使用 count book 有什么建议吗 使用触发
  • 使用 SIMD 查找素数列表 - SSE/AVX

    我很好奇是否有人对如何使用 SIMD 查找素数列表有建议 我特别感兴趣如何使用 SSE AVX 来做到这一点 我一直在研究的两种算法是试除法和埃拉托斯特尼筛法 我设法找到一种使用 SSE 进行试除的方法 我找到了一种更快的除法方法 该方法非
  • Hadoop 从 Hadoop 节点的本地文件系统访问第 3 方库

    我的所有 Hadoop 节点上都有一个 jar 文件 位于 home ubuntu libs javacv 0 9 jar 以及其他一些 jar 文件 When my 映射减少应用程序正在执行Hadoop节点 我收到此异常 java io
  • XML 反序列化和松散数组项

    因此 我正在处理一些我认为很可能格式错误的 XML 文件 并且我正在尝试弄清楚如何以及是否可以使用 XmlSerializer 将此 XML 反序列化为逻辑业务对象 假设我有以下 XML 文件
  • 我如何找出谁强制推送了 git?

    有人用过git push force但我无法从日志中看出是谁干的 有没有办法找出罪魁祸首 2018 年 11 月更新 如果您要推送到集中式 Git 存储库托管服务 例如 GitHub then你将能够看到谁强制推送了你的分支 但这只是因为
  • 将二维矩阵向右旋转[重复]

    这个问题在这里已经有答案了 我想要一个二维矩阵向右旋转 它编译得很好 但是当我尝试运行时 它说数组索引越界异常 例如 我想要 10 20 30 40 50 60 旋转成 40 10 50 20 60 30 public static int
  • 使用 WCF 从类库公开对象

    我正在使用一个公开一些对象的类库 这些对象有几个属性来保存我的客户所需的数据 我想创建一个 WCF 服务 将对象返回给我的客户端 但我无法更新类库以添加 DataContract 和 DataMember 属性 暴露这些对象的最简单方法是什
  • 通过蓝牙将 GPS 位置发送到 iOS 设备

    我们正在寻找一种通过蓝牙将 GPS 位置发送到 iPhone 或 iPad 的方法 这样做的好处是 外部 GPS 设备可以比 iOS 中的内置 GPS 设备产生更准确的位置 出于我们的测试目的 如果能够由 QA 手动生成 GPS 也很好 我
  • 如果 OpenProcess() 因 ACCESS_DENIED 失败,如何从 pid 获取进程文件名?

    我正在尝试从其 pid 获取进程名称 用户以管理员身份运行 UAC 已启用 但未提升 一些系统进程 例如services exe 以这样的方式设置他们的安全性OpenProcess PROCESS QUERY INFORMATION 失败了
  • postgresql 触发器:禁用自动提交并设置隔离级别

    我正在数据库上编写一个触发器 而不是在表上插入 进行一些操作 然后将数据插入到不同的相关表中 现在我需要禁用自动提交并在触发器内设置不同的隔离级别 我该怎么办 除了嵌入式 SQL 之外 PostgreSQL 没有禁用自动提交的设置 如果您尝
  • 致命错误:未捕获错误:未找到“Cloudinary”类

    当我尝试在 cloudinary 中上传图像时 致命错误 未捕获错误 未找到 Cloudinary 类 我的配置文件中出现此错误 我的配置文件包含 为什么我会得到这个 05 2021 我希望你找到了解决方案 如果没有尝试这个 Cloudin
  • 我可以在 Google 跟踪代码管理器中添加 Facebook 转化跟踪吗?

    我会在 Google 标签管理中添加 Facebook 转化跟踪像素 我看到的唯一问题是 FB 要求在标签之间添加代码 而 GTM 则位于 有点令人困惑 有任何想法吗 FB 转换跟踪代码应介于 and 正确部署Google Tag Mana
  • 如何参数化 Pytest 夹具?

    考虑以下 Pytest import pytest class TimeLine object instances 0 1 2 pytest fixture def timeline return TimeLine def test tim
  • 使用 OpenXML 将 PowerPoint 演示文稿另存为 PDF

    我的目标是建立一个自动化的服务器端流程来转变 ppt into a pdf Microsoft 自己建议我使用 OpenXML 现在我正在考虑这一点 我的问题是 我真的可以使用 OpenXML 实现我的目标吗 我很难找到我期望的方法 例如
  • 优化 pyomo 中的 Fortran 函数

    我希望使用 Pyomo 优化 Fortran 函数 目标函数和约束都是用 Fortran 编写的 根据给出的答案here 我们可以用ExternalFunction表达式对象 但即使是最简单的函数我也无法得到结果 下面给出的是一个可重现的示
  • C 编程中 gets、scanf 和 fgets 之间的区别[重复]

    这个问题在这里已经有答案了 我最近开始学习C编程语言 并在三本不同的书中看到了这三个输入函数 因此 当考虑到效率时 我对使用哪一个有点困惑 因此 当考虑到效率时 我对使用哪一个有点困惑 没有一个 I O 速度慢 如果需要效率 就不要进行 I
  • Firebase Firestore 适用于真实数据库,但不适用于模拟器

    我正在使用 Firebase 并开始尝试使用 Firebase 模拟器运行本地开发实例 我正在运行 Firebase Tools v8 4 1 当我使用真正的 Firestore 数据库运行时 一切正常 然而 当我使用模拟器时 出现了一些问
  • auto_ptr 与 swig

    我正在尝试包装一个使用 auto ptr 的 C 库 我正在使用痛饮 并想要生成 python 绑定 我看过 swig 文档中关于如何将 swig 与智能指针一起使用的部分here 但我无法让它发挥作用 Swig 生成想要使用 const