gpt4 book ai didi

opengl - GLSDK 打破了 easylogging++

转载 作者:行者123 更新时间:2023-12-04 21:17:58 26 4
gpt4 key购买 nike

我正在启动 OpenGL 引擎,使用 SFML 作为上下文和输入管理器,使用 GLSDK 加载 OpenGL(以及图像和现在不重要的东西)和 Boost 用于其他一些东西。

我一直在“记录”的想法中徘徊,并尝试了 Boost.Log(未能编译一个示例,并且对该问题的唯一引用未解决),Log4CPP(在启动时出错),最后一切似乎都是使用easylogging++很好,它是一个只有头文件的库(太棒了!),它有一些简洁的语法IMO。

但是在编译时会出现一堆错误:

  • C2664:“el::base::utils::DateTime::gettimeofday”:无法将参数 1 从“int *”转换为“el::base::utils::timeval *”
  • C2228:'.tv_usec' 的左边必须有类/结构/联合
  • C2227:“->tv_usec”的左侧必须指向类/结构/联合/通用类型
  • C2079:“currTime”使用未定义的结构“el::base::utils::timeval”
  • C2027:使用未定义的类型“el::base::utils::timeval”
  • 还有更多

  • 我是这样实现的:
  • 'helpers.Log.hpp':pragma once,包括 'easylogging++.h' 并定义命名空间助手 > 命名空间日志 > void 函数 init()。
  • 'helpers.Log.cpp': '_INITIALIZE_EASYLOGGINGPP' 并实现 init() 如下:
    el::Configurations conf("../log_config.cfg");
    el::Loggers::reconfigureLogger("default", conf);
    el::Loggers::reconfigureAllLoggers(conf);

  • 现在, 只有这两个文件处理日志 . “engine.Core.hpp”包括“helpers.Log.hpp”、“engine.Boot.hpp”(现在是空白)、“glload/gl_load.hpp”、“glload/gl_3_3.hpp”以及在核心类,在引擎命名空间内,调用 init() 函数。

    在整个应用程序中没有做任何其他事情。就这样,日志系统的初始化,却完全失败了。

    系统信息

    操作系统 : 视窗 7 x64

    IDE :Visual Studio 2012

    编译器: VS2012 (v110)

    编译命令 : cl/c/IF:/BTSync/prog_projs/KINGDOMS/trunk/inc/IF:/dev/SFML/21/include/IF:/dev/GLSDK/052/glload/include/IF:/dev/GLSDK/052/glutil/include/IF:/dev/GLSDK/052/glm/IF:/dev/GLSDK/052/glmesh/include/IF:/dev/GLSDK/052/glimage/include/IF:/dev/BOOST/154/IF:/DEV/LIBROCKET/121_3/include/Zi/nologo-/W3/WX-/Od/Ob0/Oy-/D WIN32/D _WINDOWS/D _DEBUG/D "CMAKE_INTDIR=\"Debug\""/D _MBCS/Gm-/EHsc/RTC1/MDd/GS/fp:precise/Zc:wchar_t/Zc:forScope/GR/Fo"KINGDOMS_0_1.dir\Debug\"/Fd"F:/BTSync/prog_projs/KINGDOMS/trunk/pro/Debug/KINGDOMS_0_1_d.pdb"/Gd/TP/analyze-/errorReport:prompt ..\src\engine.Boot.cpp ..\src\engine.Core.cpp ..\src\engine.Interfaces.cpp 。 .\src\helpers.Log.cpp ..\src\main.cpp

    发布前编辑:好的,所以看起来“glload/gl_3_3.hpp”是这里的问题。它设法打破了easylogging++。那是我的。这怎么可能呢?我能做什么?

    编辑以添加真实代码

    engine.Core.hpp
    #pragma once

    #include <glload/gl_load.hpp>
    #include <glload/gl_4_4.hpp>

    #include <helpers.Log.hpp>

    namespace engine
    {
    class Core
    {
    public:
    Core();
    ~Core();
    };
    }

    engine.Core.cpp
    #include <engine.Core.hpp>

    engine::Core::Core()
    {
    helpers::log::init();
    }

    engine::Core::~Core()
    {
    }

    helpers.Log.hpp
    #pragma once

    #include <easylogging++.h>

    namespace helpers
    {
    namespace log
    {
    void init();
    }
    }

    helpers.Log.cpp
    #include <helpers.Log.hpp>

    _INITIALIZE_EASYLOGGINGPP

    void helpers::log::init()
    {
    el::Configurations conf("../log_config.cfg");
    el::Loggers::reconfigureLogger("default", conf);
    el::Loggers::reconfigureAllLoggers(conf);
    }

    最佳答案

    我通过添加修复它

    #include <Winsock2.h>

    刚过:
    #elif _ELPP_OS_WINDOWS
    # include <direct.h>
    # include <Windows.h>

    在easylogging++.h中

    它包含 timeval 结构的定义。看起来他们忘记了。

    关于opengl - GLSDK 打破了 easylogging++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18368857/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com