#error:请定义您的平台

error C1189: #error : Please define your platform

本文关键字:平台 定义 #error      更新时间:2023-10-16

当我在visual studio ultimate2010上构建时,我有这个错误,你能让我修复这个错误吗,非常感谢!

错误1错误C1189: # Error:请定义您的平台。D:dzzsrcflexenginefxcoreplatform.h 28 1 battleserver

#pragma once
// 平台定义
#if defined __APPLE__
#include "AvailabilityMacros.h"
#include "TargetConditionals.h"
    #if TARGET_OS_IPHONE
        /* if compiling for iPhone */
        #define PLATFORM_IPHONE     1
    #else
        #define PLATFORM_MACOSX     1
    #endif
#elif TARGET_OS_IPHONE
#define PLATFORM_IPHONE     1
#elif ANDROID
#define PLATFORM_ANDROID    1
#elif _WINDOWS
#define PLATFORM_WINDOWS    1
#elif (defined(__linux__))
#define PLATFORM_LINUX      1
#elif (defined(unix))
#define PLATFORM_UNIX       1
#else
#error Please define your platform.
#endif
// 64位检测
 #if defined(__x86_64__) || defined(_M_X64) || defined(__LP64__) || defined(__POWERPC64__) || defined( _WIN64 )
    #define PLATFORM_64     1
#elif defined(__i386__) || defined(_M_IX86) || defined(_M_PPC) || defined(__LP32__) || defined(__POWERPC__) || IPHONE || ANDROID
    #define PLATFORM_32     1
#else
    #define PLATFORM_32     1
    // #error Please define your platform.
#endif
// 是否支持异常
#if PLATFORM_WINDOWS
#define PLATFORM_EXCEPTIONS     1
#else
#define PLATFORM_EXCEPTIONS     0
#endif

// Platform specific include.
#if PLATFORM_WINDOWS
    #include "platform_windows.h"
#elif PLATFORM_IPHONE
    #include "platform_iphone.h"
#elif PLATFORM_MACOSX
    #include "platform_macosx.h"
#elif PLATFORM_ANDROID
    #include "platform_android.h"
#elif PLATFORM_LINUX
    #include "platform_linux.h"
#else
    #error Unknown platform.
#endif

这个platform.h似乎试图使用预定义的宏来检测目标平台。但是,它尝试使用_WINDOWS宏来检测windows,这显然是Watcom编译器支持的预处理宏。

你的选择:

  • 由于你使用的库显然只支持windows上的watcom编译器,你可以用它来代替visual studio。如果你选择使用VS,除了这个问题,可能还有其他问题需要修复以支持它。
  • 你可以通过自己定义宏来解决这个问题。
  • 您可以通过将#elif _WINDOWS替换为#elif _WIN32来修复标题以与visual studio一起工作。参见visual studio预定义的宏。

我建议采用后一种方法,但是将库移植到VS可能(也可能不)涉及到大量的工作。