在正确值的末尾输出未知值的ctypes

2024-10-03 09:08:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下几个问题: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用于任何事情;这只是我能找到的最简单的例子,它生成了与我使用的较长函数相同的行为。)


Tags: 函数forctypesintdllpxprintfvoid
1条回答
网友
1楼 · 发布于 2024-10-03 09:08:22
mydll.PrintArray.restype = None
mydll.PrintArray(px)

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

相关问题 更多 >