为Windows 7编译IP2Location Python扩展

为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

我想编译/安装以下位置的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中编译此库时,我得到以下输出:

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获取国家/地区的方法。

好的,所以完整的解决方案是:

  • 下载stdint.h并将其放入IP2Location C库文件夹:
  • 打开dos提示符并执行“C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat”
  • 在同一dos提示符下执行“nmake/f Makefile.win”
  • cd到Python扩展文件夹并执行“set LINK=/nod:msvcrt.lib”
  • 最后,执行标准的“python setup.py安装”

  • “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”在我的机器上丢失了。