gpt4 book ai didi

python - ctypes 在正确值末尾输出未知值

转载 作者:行者123 更新时间:2023-11-30 23:58:16 24 4
gpt4 key购买 nike

我有以下 DLL('arrayprint.dll')函数,我想通过 ctypes 在 Python 中使用它:

__declspec(dllexport) void PrintArray(int* pArray) {
int i;
for(i = 0; i < 5; pArray++, i++) {
printf("%d\n",*pArray);
}
}

我的Python脚本如下:

from ctypes import *

fiveintegers = c_int * 5
x = fiveintegers(2,3,5,7,11)
px = pointer(x)

mydll = CDLL('arrayprint.dll')
mydll.PrintArray(px)

最终函数调用输出以下内容:

2
3
5
7
11
2226984

什么是 2226984?如何删除它?它看起来不是 DLL、x 或 px 内存地址的十进制值。

谢谢

迈克

(注意:我实际上并没有使用 PrintArray 做任何事情;这只是我能找到的最简单的示例,它生成了与我正在使用的较长函数相同的行为。)

最佳答案

mydll.PrintArray.restype = None
mydll.PrintArray(px)

默认情况下,ctypes 假定函数返回整型,这会导致未定义的行为(读取垃圾内存位置)。

关于python - ctypes 在正确值末尾输出未知值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3149768/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com