0

Visual Studio 2010 で Maxmind C ライブラリを正常にコンパイルした人はいますか? unistd.h のように見つからないファイルに関する多くのエラーが発生するため、Windows でコンパイルできません。

4

1 に答える 1

4

表示されているエラーは、実際には必要のない GeoIPUpdate が含まれていることが原因である可能性があります。GeoIPUpdate は、データベースを更新するためのスタンドアロン スクリプトであり、API 自体を使用する必要はありません。それを削除して、問題が解決するかどうかを確認してください。

さらに、Visual Studio 2005 でバージョン 1.4.8 をコンパイルするには、次の追加手順を実行する必要がありました。

  1. GeoIPCity.c で、GeoIP*.h ファイルのインクルードを変​​更して、<> の代わりに "" を使用します。
  2. GeoIPCity.h で、GeoIP.h のインクルードを変​​更して、<> の代わりに "" を使用します。
  3. GeoIP.h に追加#define ssize_t long
  4. PACKAGE_VERSIONGeoIP.cで「1.4.8」に変更
  5. static constGeoIPCity.c では、配列を宣言するときにa を使用できません。の定義を次のように変更tmp_fixed_recordします。 unsigned char tmp_fixed_record[6+4]; //Can't use CITYCONFIDENCEDIST_FIXED_RECORD in declaration
  6. GeoIPCity.ctの先頭で宣言し_extract_record()ます。
  7. main 関数を GeoIPCity.c に追加して、コードをコンパイルします。
  8. http://www.winimage.com/zLibDll/index.htmlから zlib125.dll.zip ファイルをダウンロードします。これらのファイルを抽出し、dllx64/* および static64/zlibstat.lib ファイルをディスク上の場所に保存します。ここで、Visual Studio で Project->Properties->Linker->Input に移動し、"Additional Dependencies" の下に "ws2_32.lib zlibwapi.lib zlibstat.lib" を追加します。次に、[Linker] -> [General] の下で [Additional Library Dependencies] に移動し、上記のファイルを保存した場所を追加します。
  9. GeoIPCity.c および GeoIP.cpreadでは定義されていません。これらの各ファイルに次の定義を追加します。

#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

于 2012-11-22T10:30:09.230 に答える