我在跟踪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个声誉之前,我是不允许发表评论的。在
从macOS上的stdio.h头文件:
#define stdout __stdoutp
因此,您的python代码应该这样做:
cstdout = c_void_p.in_dll(libc, '__stdoutp')
我希望答案是有帮助的。在
相关问题 更多 >
编程相关推荐