gpt4 book ai didi

python - 将基于 ctypes 的代码片段从 Linux 移植到 Windows

转载 作者:行者123 更新时间:2023-12-01 06:12:43 25 4
gpt4 key购买 nike

我有以下在Linux下运行的代码。我想将其移植到 Windows
,但我不知道在哪里寻找。

import os
import sys
import ctypes
import ctypes.util
MAX_CHARS = 1000 # maximum number of characters to read

if __name__ == "__main__":
libc = ctypes.CDLL("libc.so.6") # LINUX
fd = libc.open(sys.argv[0], os.O_RDONLY)
buffer = " " * MAX_CHARS
num_chars_read = libc.read(fd, buffer, MAX_CHARS)
print buffer[:num_chars_read]
libc.close(fd)

# ALL OF THIS GIVES WRONG DLL's 'UNDER WINDOWS
#libc = ctypes.CDLL(ctypes.util.find_library('c'))
#libc = ctypes.windll.kernel32 # WINDOWS
#libc = ctypes.windll.user32 # WINDOWS
#libc = ctypes.windll.shell32 # WINDOWS
#libc = ctypes.windll.gdi32 # WINDOWS
#libc = ctypes.cdll.msvcrt # WINDOWS

知道我需要在哪个 DLL 中查找“打开”和“读取”调用吗?

非常感谢

最佳答案

These slides表明这将起作用:

>>> from ctypes import *
>>> libc = cdll.msvcrt

然后我可以访问 libc.printflibc.fopen,但不能访问 openread,尽管 libc._openlibc._read 可用。也许是调用约定的问题?

关于python - 将基于 ctypes 的代码片段从 Linux 移植到 Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4875776/

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