未在x86中构建的Bullet物理源代码 - Visual Studio 2017中的错误预处理程序指令

问题描述 投票:-1回答:1

我正在尝试构建Bullet Physics源代码。他们的cmake东西都不起作用,所以我只是将Bullet源文件直接复制到我的visual studio项目中并直接构建它。但是,只会构建64位版本。当我尝试构建32位时,它会出现一堆错误,从“未找到用户定义的文本运算符E2474”开始 - 这似乎来自于btScalar.h中btAssert的定义

我的项目必须缺少一些预处理器指令或设置或其他东西。如果有人可以查看这些定义并查看我的Visual Studio 2017项目中需要更改的设置,那将是惊人的。请让我知道,谢谢。

项目链接:https://github.com/mister51213/BulletSetupTest/tree/master/BulletPhysicsTest1

码:

#ifdef BT_DEBUG
    #ifdef _MSC_VER
        #include <stdio.h>
        #define btAssert(x) { if(!(x)){printf("Assert "__FILE__ ":%u ("#x")\n", __LINE__);__debugbreak();   }}
        //#define btAssert(x)

    #else//_MSC_VER
        #include <assert.h>
        #define btAssert assert
    #endif//_MSC_VER
#else
        #define btAssert(x)
        //#define btAssert(x) { if(!(x)){printf("Assert "__FILE__ ":%u ("#x")\n", __LINE__);__debugbreak(); }}

#endif
        //btFullAssert is optional, slows down a lot
        #define btFullAssert(x)

        #define btLikely(_c)  _c
        #define btUnlikely(_c) _c
#else
c++ visual-studio visual-studio-2017 assert preprocessor-directive
1个回答
1
投票

宏扩展没有字符串文字和下一个元素之间的空格,比如

"Assert "__FILE__

遇到user-defined literals规则的问题,保留了这种格式。

这在C ++ 11中已经发生了。

简单的解决方案是在字符串文字和下一个元素之间添加一个空格:

"Assert "  __FILE__
---------^

有关更多示例,请参阅http://en.cppreference.com/w/cpp/language/user_literal#Notes

© www.soinside.com 2019 - 2024. All rights reserved.