为Windows 7编译IP2Location Python扩展
我想编译/安装以下位置的IP2Location Python扩展: www.ip2location.com/python.aspx 我在这些网站上尝试了以下说明: eli.thegreenplace.net/2008/06/28/compiling-python-extensions-with-distutils-and-mingw/ boodebr.org/main/python/build-windows-extensions 但我不知道在哪里。问题在于Python扩展依赖于另一个C库: www.ip2location.com/c.aspx 当我尝试在cygwin中编译此库时,我得到以下输出:为Windows 7编译IP2Location Python扩展,python,c,windows,Python,C,Windows,我想编译/安装以下位置的IP2Location Python扩展: www.ip2location.com/python.aspx 我在这些网站上尝试了以下说明: eli.thegreenplace.net/2008/06/28/compiling-python-extensions-with-distutils-and-mingw/ boodebr.org/main/python/build-windows-extensions 但我不知道在哪里。问题在于Python扩展依赖于另一个C库: w
make all-recursive
make[1]: Entering directory `/home/ty/Python-IP2Location/C-IP2Location-3.0.0'
Making all in libIP2Location
make[2]: Entering directory `/home/ty/Python-IP2Location/C-IP2Location-3.0.0/li
bIP2Location'
/bin/sh ../libtool --tag=CC --mode=link gcc -mno-cygwin -IiMath/ -g -O2 -modul
e -no-undefined -avoid-version -o libIP2Location.la -rpath /cygdrive/c/MinGW/li
b libIP2Location_la-IP2Location.lo libIP2Location_la-imath.lo
libtool: link: rm -fr .libs/libIP2Location.dll.a
libtool: link: gcc -mno-cygwin -shared .libs/libIP2Location_la-IP2Location.o .l
ibs/libIP2Location_la-imath.o -mno-cygwin -o .libs/libIP2Location.dll -Wl,-
-enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/libIP2Location.dll.
a
.libs/libIP2Location_la-IP2Location.o: In function `IP2Location_ip2no':
/home/ty/Python-IP2Location/C-IP2Location-3.0.0/libIP2Location/IP2Location.c:71
8: undefined reference to `_inet_addr@4'
Creating library file: .libs/libIP2Location.dll.a
collect2: ld returned 1 exit status
make[2]: *** [libIP2Location.la] Error 1
make[2]: Leaving directory `/home/ty/Python-IP2Location/C-IP2Location-3.0.0/lib
IP2Location'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/ty/Python-IP2Location/C-IP2Location-3.0.0'
make: *** [all] Error 2
我在Windows7 32位上运行python 2.6.3。
我有微软VisualStudio2008(虽然不知道如何使用),当然还有cygwin/MinGW
非常感谢您的帮助或指点。尝试将
-lws2_32
选项添加到链接命令
顺便说一句,还有另一个从IP获取国家/地区的方法。好的,所以完整的解决方案是:
“set LINK=/nod:msvcrt.lib”建议的功劳归于Providenza&Boekelheide公司(probo.com)的Tim Roberts他很友好地回答了我在python win32邮件列表上的求助请求。谢谢蒂姆 谢谢你的回复-不幸的是没有帮助。您提到的python库没有IP2Location包功能齐全,但感谢您提供的提示。另外,我已经编写了一个纯python库,但速度不是很快——我希望C扩展能为我加快速度。与ws2_32.lib的链接有助于解决未定义的引用问题吗?这是一个windows(但我不确定windows 7)库,其中定义了这些符号。不,这没有任何区别。谢谢你的帮助。所以我通过调用“C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat”+nmake+Makefile.win+来编译C库。现在扩展本身拒绝编译:需要注意的一点是:“C:\Python26\PCbuild”在我的机器上丢失了。