Используя ZZipLib с SDL? (Компиляция SDL_rwops_zzip.c) - PullRequest
0 голосов
/ 09 декабря 2011

Этот вопрос немного конкретен, но здесь идет речь: я хотел бы использовать ZZipLib с SDL. (http://zziplib.sourceforge.net/) ZZipLib поставляется с файлом SDL_rwops_zzip.c, который специально предназначен для облегчения подключения к файловым вызовам SDL. И я фактически сделал это без проблем на Mac.

Проблема в Windows, которая не будет компилироваться. Данный код взят из SDL_rwops_zzip.c:

#define SDL_RWOPS_ZZIP_DATA(_context) \
         ((_context)->hidden.unknown.data1)
#define SDL_RWOPS_ZZIP_FILE(_context)  (ZZIP_FILE*) \
         ((_context)->hidden.unknown.data1)

static int _zzip_seek(SDL_RWops *context, int offset, int whence) // line 30
{
    return zzip_seek(SDL_RWOPS_ZZIP_FILE(context), offset, whence);
}

Я получаю следующие ошибки:

SDL_rwops_zzip.c (31): предупреждение C4028: формальный параметр 1 отличается от объявления SDL_rwops_zzip.c (31): предупреждение C4028: формальный параметр 3 отличается от объявления SDL_rwops_zzip.c (31): предупреждение C4029: объявленный список формальных параметров отличается от определения SDL_rwops_zzip.c (31): ошибка C2491: «_read»: определение функции dllimport не разрешено

Этот пост переполнения стека дает некоторую информацию об этой ошибке: определение функции dllimport не разрешено

но я действительно не понимаю, что делать, чтобы устранить эту ошибку в данной конкретной ситуации.

1 Ответ

1 голос
/ 14 декабря 2011

Я решил проблему, перекомпилировав zziplib с помощью встроенного с нуля проекта Visual Studio 10 (обновленный проект Visual Studio 7 не создал рабочую библиотеку или .dll), а затем закомментировал эти строки в файле conf.h.:

# if !__STDC__
#  ifndef _zzip_lseek
#  define _zzip_lseek _lseek
#  endif
#  ifndef _zzip_read
#  define _zzip_read _read
#  endif
#  ifndef _zzip_write
#  define _zzip_write _write
#  endif
#      if 0
#  ifndef _zzip_stat
#  define _zzip_stat _stat
#  endif
#      endif
# endif // !__STDC__
#endif

и это:

#  ifndef _zzip_lseek
#  define _zzip_lseek lseek
#  endif

#  ifndef _zzip_read
#  define _zzip_read  read
#  endif

#  ifndef _zzip_write
#  define _zzip_write  write
#  endif
...