发布网站制作,新品发布会英语,网站建设公司前景,开封市建设局网站我已经阅读了许多文档#xff0c;示例和StackOverflow主题#xff0c;但仍然无法正常工作#xff01; 我正在为我的C COM对象编写一个Python接口。 这不是我第一次这样做。 过去#xff0c;我已经成功地使用comtypes获取单个接口指针#xff0c;并将它们传递给我的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 pointersexportLayers.append(comtypes.cast(0, comtypes.POINTER(esriCarto.IFeatureLayer)))# create ctypes array and populatePointerArray ctypes.c_void_p * len(exportLayers)pointers PointerArray()for i in range(len(exportLayers)):pointers[i] exportLayers[i]# export is comtypes interface pointer acquired earlierexport.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寻求任何帮助(或猜测)。 艾伦