使用Visual Studio 2010编译的MaxMind C库(Compile Maxmind

2019-10-17 04:54发布

不anybony成功编译在Visual Studio 2010中的的MaxMind C库? 我不能够编译它在Windows,因为我得到了很多关于文件的错误没有发现像unistd.h中

Answer 1:

您所看到的错误可能是因为你是包括GeoIPUpdate这是不是真的有必要。 GeoIPUpdate是用于更新数据库的一个独立的脚本,而不必使用API​​自己。 尝试删除,看看是否能解决您的问题。

此外,为了获得版本1.4.8编译我在Visual Studio 2005中我不得不做以下额外的步骤:

  1. 在GeoIPCity.c改变的GeoIP列入* .h文件,而不是使用“” <>
  2. 在GeoIPCity.h改变GeoIP.h列入使用代替“” <>
  3. 在GeoIP.h添加#define ssize_t long
  4. 在GeoIP.c变化PACKAGE_VERSION “1.4.8”
  5. 在GeoIPCity.c你不能用一个static const声明数组时。 改变的定义tmp_fixed_recordunsigned char tmp_fixed_record[6+4]; //Can't use CITYCONFIDENCEDIST_FIXED_RECORD in declaration unsigned char tmp_fixed_record[6+4]; //Can't use CITYCONFIDENCEDIST_FIXED_RECORD in declaration
  6. 在GeoIPCity.c声明t在开始_extract_record()
  7. 添加的主要功能GeoIPCity.c让你的代码进行编译。
  8. 从下载zlib125.dll.zip文件http://www.winimage.com/zLibDll/index.html 。 提取这些文件并保存dllx64 / *和static64 / zlibstat.lib文件在磁盘上的位置。 现在,在Visual Studio中去项目 - >属性 - >连接器 - >输入,然后在“附加依赖”添加“WS2_32.LIB zlibwapi.lib zlibstat.lib”。 接下来,在连接器 - >常规去“附加库的依赖”,并添加您保存上述文件的位置。
  9. 在GeoIPCity.c和GeoIP.c pread是不确定的。 以下定义添加到每个文件:

 #define pread my_pread static size_t my_pread( int file_no, void *buffer, size_t size, size_t offset ) { if (_lseek( file_no, (long)offset, SEEK_SET) == offset) return _read(file_no, buffer, (int)size); else return -1L; } 
此外,添加#include <io.h>使得以GeoIP.h _lseek_read都包括在内。



文章来源: Compile Maxmind C library with visual studio 2010