You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python向C++ DLL传递指针后打印地址指向的内容?

解决Python调用C++ DLL后获取指针指向值的问题

你的问题出在覆盖了原始的USHORT变量:你先创建了sizeKey = USHORT(),随后又把它赋值为ctypes.byref(sizeKey),导致原来的数值变量被指针对象覆盖,打印时自然只会显示指针信息。

修正后的代码

import ctypes

my_dll = ctypes.WinDLL("C:/CFiles/test_dll/SimpleArg/x64/Debug/SimpleArg.dll")

USHORT = ctypes.c_ushort

func6 = my_dll.test_sizeKey
# 保留原始的数值变量,不要覆盖
sizeKey = USHORT()

func6.argtypes = [ctypes.POINTER(USHORT)]
func6.restype = ctypes.c_bool

# 传递指针,但保留原始变量的引用
success6 = func6(ctypes.byref(sizeKey))

# 两种方式获取实际值
print("直接打印变量值:", sizeKey)
print("通过value属性获取:", sizeKey.value)

关键说明

  • ctypes.byref(sizeKey)只是生成一个指向sizeKey的临时指针,不要用它覆盖原始变量,否则会丢失对数值存储区域的引用。
  • ctypes的基本数值类型(如c_ushort)实例本身可以直接打印显示值,也可以通过.value属性访问底层的Python数值。

内容的提问来源于stack exchange,提问作者engrtech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 20:07:03