0

SkyFireEMU (https://github.com/ProjectSkyfire/SkyFireEMU) を Visual Studio 2010 (32 BIT) でコンパイルしようとしていますが、エラーが発生します ("worldserver" のほぼすべてのファイルで):

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

これにより、この平和なコードにリダイレクトされます。

#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

誰かがこの問題を解決するのを手伝ってくれますか? エラーの意味は何ですか? 何がうまくいかないのか本当にわかりません。

4

2 に答える 2

2

コードが古い。typedef intptr_t intptr今日は(別名)std::intptr_tを使用できます<cstdint>

于 2012-04-13T15:13:07.030 に答える
1

SIZEOF_CHARP(そのコードを書いた人によると)適切に設定されていないため、エラーメッセージが表示されます。最善の策は、SkyFireEMUのドキュメントを参照することです。コンパイルする前に、このフラグを設定する必要がある場合があります。

そうは言っても、私は簡単なグーグルをして、これを見つけまし。これは同じエラーメッセージを説明しています。提供するブロックの直前に次のように書くことをお勧めします。

#ifndef SIZEOF_CHARP
#define SIZEOF_CHARP SIZEOF_LONG
#endif

ただし、これは実際にはエラーを抑制するだけなので、根本的な問題がまだある可能性があります。

于 2012-04-13T14:55:04.220 に答える