2012-04-13 2 views
0

Я пытаюсь скомпилировать SkyFireEMU (https://github.com/ProjectSkyfire/SkyFireEMU) с Visual Studio 2010 (32 BIT), но я получаю сообщение об ошибке (Почти все файлы "WorldServer"):Ошибка компиляции SkyFireEMU, sizeof (void *) не является

fatal error C1189: #error : sizeof(void *) is neither sizeof(int) nor sizeof(long) nor sizeof(long long) 

Это rederects меня к этому миру кода:

#if SIZEOF_CHARP == SIZEOF_INT 
typedef int intptr; 
#elif SIZEOF_CHARP == SIZEOF_LONG 
typedef long intptr; 
#elif SIZEOF_CHARP == SIZEOF_LONG_LONG 
typedef long long intptr; 
#else 
#error sizeof(void *) is neither sizeof(int) nor sizeof(long) nor sizeof(long long) 
#endif 

Может кто-то помочь мне с решением этой проблемы? Что означает ошибка? Я действительно не знаю, что пошло не так.

ответ

2

Код устарел. Сегодня вы можете использовать typedef intptr_t intptr (aka std::intptr_t в <cstdint>).

1

SIZEOF_CHARP не устанавливается надлежащим образом (в соответствии с тем, кто написал этот код), поэтому ссылается на сообщение об ошибке. Лучше всего консультироваться с документацией SkyFireEMU, вам может потребоваться установить этот флаг перед компиляцией или что-то в этом направлении.

Сказав это, я сделал быстрый Google и нашел this, в котором описывается идентичное сообщение об ошибке. Он предлагает писать следующее прямо перед блоком вы предоставляете:

#ifndef SIZEOF_CHARP 
#define SIZEOF_CHARP SIZEOF_LONG 
#endif 

Там все еще может быть основной проблемой, хотя, так как это действительно только подавляет ошибку.