如何使用libc.dylib库

2024-09-27 00:15:26 发布

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

我在跟踪Python ctypes: Python file object <-> C FILE *中的一些答案,遇到了一个问题。以下代码:

from ctypes import *
libc = CDLL('libc.so.6')
cstdout = c_void_p.in_dll(libc, 'stdout')

在我运行Ubuntu的虚拟机上正常工作。然而,当我在运行HighSierra的MacbookPro上尝试做同样的事情时,即:

^{pr2}$

我得到以下错误:

Traceback (most recent call last):
   File "<stdin>", line 3, in <module>
ValueError: dlsym(0x7fff6bfc4728, stdout): symbol not found

我试过用python2.7和python3.5。在这两种情况下,我在Ubuntu上没有错误,在osx HighSierra上也没有出现前面提到的错误。在

我之所以需要这个,是因为我正在为一个C-api编写一个Python包装器,并且在这个C-api中有一个函数需要FILE*作为输入参数,所以我想将stdout传递给它。在

任何帮助都将不胜感激!在

另外,我想为写一篇新的帖子而道歉,而不是在现有的帖子中发表评论,但是我是一个新用户,目前只有35个声誉,在我获得至少50个声誉之前,我是不允许发表评论的。在


Tags: 答案inapiobjectubuntu错误stdout评论
1条回答
网友
1楼 · 发布于 2024-09-27 00:15:26

从macOS上的stdio.h头文件:

#define stdout __stdoutp

因此,您的python代码应该这样做:

cstdout = c_void_p.in_dll(libc, '__stdoutp')

我希望答案是有帮助的。在

相关问题 更多 >

    热门问题