不anybony成功编译在Visual Studio 2010中的的MaxMind C库? 我不能够编译它在Windows,因为我得到了很多关于文件的错误没有发现像unistd.h中
Answer 1:
您所看到的错误可能是因为你是包括GeoIPUpdate这是不是真的有必要。 GeoIPUpdate是用于更新数据库的一个独立的脚本,而不必使用API自己。 尝试删除,看看是否能解决您的问题。
此外,为了获得版本1.4.8编译我在Visual Studio 2005中我不得不做以下额外的步骤:
- 在GeoIPCity.c改变的GeoIP列入* .h文件,而不是使用“” <>
- 在GeoIPCity.h改变GeoIP.h列入使用代替“” <>
- 在GeoIP.h添加
#define ssize_t long
- 在GeoIP.c变化
PACKAGE_VERSION
“1.4.8” - 在GeoIPCity.c你不能用一个
static const
声明数组时。 改变的定义tmp_fixed_record
是unsigned 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
- 在GeoIPCity.c声明
t
在开始_extract_record()
- 添加的主要功能GeoIPCity.c让你的代码进行编译。
- 从下载zlib125.dll.zip文件http://www.winimage.com/zLibDll/index.html 。 提取这些文件并保存dllx64 / *和static64 / zlibstat.lib文件在磁盘上的位置。 现在,在Visual Studio中去项目 - >属性 - >连接器 - >输入,然后在“附加依赖”添加“WS2_32.LIB zlibwapi.lib zlibstat.lib”。 接下来,在连接器 - >常规去“附加库的依赖”,并添加您保存上述文件的位置。
- 在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