日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發(fā)布時間:2023/12/10 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c与python内存传递_python - 从Python向C ++传递COM指针数组 - 堆栈内存溢出 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我已經(jīng)閱讀了許多文檔,示例和StackOverflow主題,但仍然無法正常工作! 我正在為我的C ++ COM對象編寫一個Python接口。 這不是我第一次這樣做。 過去,我已經(jīng)成功地使用comtypes獲取單個接口指針,并將它們傳遞給我的COM類,但是這次我需要將一個指針傳遞給接口指針數(shù)組。

我需要調(diào)用的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參數(shù)應(yīng)該是指向IFeatureLayer指針的以N結(jié)尾的C數(shù)組的指針。 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變量內(nèi)容的Python轉(zhuǎn)儲,可以顯示指針值已成功從前者轉(zhuǎn)移到后者。 這些指針的Python測試成功。 但是,當我調(diào)試ExportGeopackage()時,由attributeExportLayers指向的內(nèi)存與預期的IFeatureLayer指針數(shù)組不相似。 它看起來像是單個指針(指向錯誤的位置),后跟一長串的空指針。 考慮到Python指針變量可能已被垃圾回收,我在調(diào)用ExportGeopackage()之后添加了對指針的引用。 這沒什么區(qū)別。

我是否以某種方式插入了更高級別的間接尋址,或者插入的間接尋址不足? 我很迷惑

TIA尋求任何幫助(或猜測)。 艾倫

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的c与python内存传递_python - 从Python向C ++传递COM指针数组 - 堆栈内存溢出的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。