2

我正在尝试为 Windows 构建 python netifaces。我正在使用 microsoft visual c++ express 2010 版。当我运行命令 python setup.py install 我得到以下日志和错误:

running install
running bdist_egg
running egg_info
writing netifaces.egg-info\PKG-INFO
writing top-level names to netifaces.egg-info\top_level.txt
writing dependency_links to netifaces.egg-info\dependency_links.txt
reading manifest file 'netifaces.egg-info\SOURCES.txt'
writing manifest file 'netifaces.egg-info\SOURCES.txt'
installing library code to build\bdist.win32\egg
running install_lib
running build_ext
building 'netifaces' extension
c:\Program Files\Microsoft Visual Studio 10.0\VC\BIN\cl.exe /c /nologo /Ox /MD /
W3 /GS- /DNDEBUG -DWIN32=1 -DNETIFACES_VERSION=0.8 -Ic:\python27\include -Ic:\py
thon27\PC /Tcnetifaces.c /Fobuild\temp.win32-2.7\Release\netifaces.obj
netifaces.c
netifaces.c(410) : error C2275: 'PyObject' : illegal use of this type as an expr
ession
        c:\python27\include\object.h(108) : see declaration of 'PyObject'
netifaces.c(411) : error C2275: 'PyObject' : illegal use of this type as an expr
ession
        c:\python27\include\object.h(108) : see declaration of 'PyObject'
netifaces.c(720) : error C2275: 'PyObject' : illegal use of this type as an expr
ession
        c:\python27\include\object.h(108) : see declaration of 'PyObject'
netifaces.c(720) : error C2065: 'dict' : undeclared identifier
netifaces.c(722) : error C2065: 'dict' : undeclared identifier
netifaces.c(722) : warning C4047: '=' : 'int' differs in levels of indirection f
rom 'PyObject *'
netifaces.c(724) : error C2065: 'dict' : undeclared identifier
netifaces.c(734) : error C2065: 'dict' : undeclared identifier
netifaces.c(734) : warning C4047: 'function' : 'PyObject *' differs in levels of
 indirection from 'int'
netifaces.c(734) : warning C4024: 'PyDict_SetItemString' : different types for f
ormal and actual parameter 1
netifaces.c(736) : error C2065: 'dict' : undeclared identifier
netifaces.c(736) : warning C4047: 'function' : 'PyObject *' differs in levels of
 indirection from 'int'
netifaces.c(736) : warning C4024: 'PyDict_SetItemString' : different types for f
ormal and actual parameter 1
netifaces.c(738) : error C2065: 'dict' : undeclared identifier
netifaces.c(738) : warning C4047: 'function' : 'PyObject *' differs in levels of
 indirection from 'int'
netifaces.c(738) : warning C4024: 'PyDict_SetItemString' : different types for f
ormal and actual parameter 1
netifaces.c(744) : error C2065: 'dict' : undeclared identifier
netifaces.c(744) : warning C4047: 'function' : 'PyObject *' differs in levels of
 indirection from 'int'
netifaces.c(744) : warning C4024: 'add_to_family' : different types for formal a
nd actual parameter 3
error: command '"c:\Program Files\Microsoft Visual Studio 10.0\VC\BIN\cl.exe"' f
ailed with exit status 2

抱歉格式不好我错过了什么?

4

1 回答 1

1

将 netifaces.c 重命名为 netifaces.cpp(并相应地更新 setup.py)。

原因是使用 .c 扩展名时,MSVC 将这些文件解释为遵循 C89,而 netifaces.c 不遵循;更多信息在这里: 错误C2275:非法使用这种类型作为表达式

于 2013-03-22T21:33:07.353 回答