c与python内存传递_python - 从Python向C ++传递COM指针数组 - 堆栈内存溢出

我已经阅读了许多文档,示例和StackOverflow主题,但仍然无法正常工作! 我正在为我的C ++ COM对象编写一个Python接口。 这不是我第一次这样做。 过去,我已经成功地使用comtypes获取单个接口指针,并将它们传递给我的COM类,但是这次我需要将一个指针传递给接口指针数组。

我需要调用的COM接口:

STDMETHOD(ExportGeopackage)([in] IMap* pMap,

[in] imageFormatType imageFormat,

[in] long imageQuality,

[in] long zoomMin,

[in] long zoomMax,

[in] IFeatureLayer** attributeExportLayers,

[in] BSTR title,

[in] BSTR description,

[in] BSTR saveToPath,

[in] ITrackCancel* pTrackCancel);

attributeExportLayers参数应该是指向IFeatureLayer指针的以N结尾的C数组的指针。 ExportGeopackage()已通过C ++客户端测试。 我正在编写第一个Python客户端。

在Python中:

# append a null pointer to the list of comtypes IFeatureLayer pointers

exportLayers.append(comtypes.cast(0, comtypes.POINTER(esriCarto.IFeatureLayer)))

# create ctypes array and populate

PointerArray = ctypes.c_void_p * len(exportLayers)

pointers = PointerArray()

for i in range(len(exportLayers)):

pointers[i] = exportLayers[i]

# export is comtypes interface pointer acquired earlier

export.ExportGeopackage(map, format, quality, min, max,

ctypes.cast(pointers, ctypes.POINTER(esriCarto.IFeatureLayer)),

title, desc, geopackage_path, 0)

比较exportLayer和pointers变量内容的Python转储,可以显示指针值已成功从前者转移到后者。 这些指针的Python测试成功。 但是,当我调试ExportGeopackage()时,由attributeExportLayers指向的内存与预期的IFeatureLayer指针数组不相似。 它看起来像是单个指针(指向错误的位置),后跟一长串的空指针。 考虑到Python指针变量可能已被垃圾回收,我在调用ExportGeopackage()之后添加了对指针的引用。 这没什么区别。

我是否以某种方式插入了更高级别的间接寻址,或者插入的间接寻址不足? 我很迷惑

TIA寻求任何帮助(或猜测)。 艾伦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】TCP/IP协议--TCP的超时和重传

TCP是可靠传输。可靠之一体现在收到数据后,返回去一个确认。但是不能完全避免的是,数据和确认都可能丢失。解决这个办法就是,提供一个发送的重传定时器:如果定时器溢出时还没收到确认,它就重传这个报文段。 想法是完美…

【技术】Qt对话框讲解

前言 Qt中对话框QDialog是几乎每个项目都会用到的GUI窗口对象。本文通过讲解QDialog及其子类在项目中经常被用到的功能点,帮助小伙伴们理解和掌握其使用方法。 QDialog QDialog是Qt对话框类树中的基类,Qt为我们提供了很多QDialog子类,即标…

mysql集群方案对比_MySQL云原生方案在携程开发测试场景中的实践

一、背景与使用场景随着Kubernetes平台在容器云计算领域的一统天下,云原生 (Cloud Native) 一词也被提的越来越频繁。各类应用纷纷走上了容器化、云原生化的道路,无状态服务应用在Kubernetes平台上的运行,已经得到了大规模生产级别的实践认可…

UML核心问题

帮助读者理解每种图是为了展现什么内容、解决什么核心问题而存在的。 下面按照重要性先后依次说明。 1. 用例图 核心:人、目标、功能 以人为出发点,描述人实现一个目标需要使用哪些功能,仅仅指出功能点就行,点到即止&#xff0c…

【转】setsocketopt getsocketopt比较全的参数说明

setSocketOption各项的含义 DELAY 小缓冲写入延迟值。如果为0,则禁用了TCP对于小缓冲区操作的Nagle算法。如果需要启动该算法则需要把该值设置为非0 KEEPLIVE 保持连接的特性。如果该值为0,则禁用了保持连接的特性。如果要启动该特性则要把…

vb.net datagridview数据批量导入sql_【自学C#】|| 笔记 44 ComboBox:组合框控件数据绑定...

一、ComboBox:组合框控件数据绑定在 Windows 应用程序中很多控件都提供了 DataSource 属性,并将 DataSet 或 DataTable 的值直接赋给该属性,这样在控件中即可显示从数据库中查询出来的数据。 常用的数据绑定控件有文本框(TextBox)、标签(L…

【转】C#Socket编程详解(一)TCP与UDP简介

一、TCP与UDP 1、TCP 1.1 定义 TCP(TransmissionControl Protocol)传输控制协议。 是一种可靠的、面向连接的协议(eg:打电话)、传输效率低全双工通信(发送缓存&接收缓存)、面向字节流。使用TCP的应…

【精华】掌握Qt调试技术

前言 软件调试,是开发过程中必备的技能。通过调试可以发现软件存在的bug,即缺陷。调试可以帮助开发者窥探到软件运行过程中的详细状态,从而为消除bug提供重要信息。调试的英文是debug,前面的de在英文中表示“反对”,“…

ps海报合成教程_如何利用PS制作海报?详细教程来了!

今天能学长给大家带来一套利用PS做【月满中秋】海报的教程。福利干货到,请大家接住!话不多说,直接上教程【月满中秋-第一课】月满中秋-海报制作教程https://www.zhihu.com/video/1187797197951918080为了方便大家阅读,本篇文章特地…

【转】WebSocket详解(一):初步认识WebSocket技术

1、前言 HTML5规范在传统的web交互基础上为我们带来了众多的新特性,随着web技术被广泛用于web APP的开发,这些新特性得以推广和使用,而websocket作为一种新的web通信技术具有巨大意义。 本文将带您认识WebSocket。也可查看本文的下篇&#x…

【Qt调试技巧】Profile配置使用及一些坑

介绍 不知从哪个版本起,Qt Creator中的构建配置中,增加了一种新型配置,名叫“Profile”,如下图所示: 官方对Profile的描述是:Profile是介于Debug和Release中间的一种配置。具体是什么意思呢?…

python 语句简写_自学Python-语句之列表推导式

先举例分析运行过程:例如:#将list_a[1,2,3,4,5]元素扩大10倍,生成新的列表。如果按传统的for循环来写:--------------------list_a[1,2,3,4,5]list_b[]for x in list_a:list_b.append(x*10)print(list_b)输出:[10, 20,…

Qt中使用OpenSSL

概述 OpenSSL官网 OpenSSL官网:OpenSSL是一个开源跨平台的加密库,应用广泛。Windows提供了自己的一套加密认证API,感兴趣的话可以参考:Windows Authentication Overview。 Qt官方文档: Secure Sockets Layer (SSL)…

【转】带你玩转Visual Studio——03.带你了解VC++各种类型的工程

上一篇文章带你玩转Visual Studio——带你新建一个工程一文中提到新建一个工程时会有很多的工程类型(图1),现在将简单介绍各种类型工程的含义和主要用途。由于这里包含的工程类型太多,有很多本人也没有接触过,有些可能理解的不太对的地方还请…

数学学习过程中的感悟(一)

前言 最近在考研复习,回顾自己的学习数学的过程,有一些感悟,在此记录一下。 正文 大学的时候,学习到了高数,但是接触不久就丧失了兴趣。明明中学时代还很喜欢学习数学,为什么到了大学,一点兴…

如何调整金格电子章服务器印章_重磅!公安部再度认可电子签名、电子印章法律效力!...

近日,公安部发布《关于修改〈公安机关办理刑事案件程序规定〉的决定》,对《公安机关办理刑事案件程序规定》(以下简称规定)进行了全面修改完善,并将于9月1日起施行。修改后的规定共14章388条。其中,新增的第…

【转】带你玩转Visual Studio——04.带你高效开发

上一篇文章带你玩转Visual Studio——带你了解VC各种类型的工程一文中讲了各种类型VC工程的主要功能和用途。现在将带你一起快速开发c程序。 有过Java开发经验的人都知道Java的常用开发工具(如Eclipse、Intellij IDEA等)都有非常强大的关键字高亮、智能提示、快速追踪等的功能…

python编译make_Python在Linux下编译安装

【准备环境】Linux centos【前言】1 linux下默认带Python,带的是2.7版本的 ,如果需要升级版本,需要把系统的自带的Python改名或者卸载,再次安装你所需要的Python版本,centos下由于yum依赖自带的Python2.7,所…

【信号与线性系统】知识点与学习攻略

知识点理解 关于正交分解可以看这个视频: https://www.bilibili.com/video/BV1qV411C7u6/ 记住两个完备正交函数集: 一个是正余弦三角函数,非零不同频率项乘积为0,非零同频率项乘积积分为T/2,零频率项乘积积分为T。 一…

【转】C# 网络连接中异常断线的处理:ReceiveTimeout, SendTimeout 及 KeepAliveValues(设置心跳)

在使用 TcpClient 网络连接中常常会发生客户端连接异常断开, 服务端需要设置检测手段进行这种异常的处理; 1、对于短连接, 通过对 Socket 属性ReceiveTimeout 和 SendTimeout 设置恰当的值, 使得程序在进行读/写时超时, 会产生 SocketException 异常, 通过检查这个…