首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GLSDK破坏easylogging++

GLSDK破坏easylogging++
EN

Stack Overflow用户
提问于 2013-08-21 22:37:32
回答 1查看 988关注 0票数 5

我正在启动一个OpenGL引擎,使用SFML作为上下文和输入管理器,使用GLSDK加载OpenGL (以及现在不重要的图像和事情),并为其他一些事情进行增强。

我一直在思考“日志”的想法,并尝试了Boost.Log (未能编译一个示例,对问题的唯一引用尚未解决)、Log4CPP (在启动时出现了错误),最后,easylogging++似乎一切都很好,它只是一个标头库(horray!)有一些简洁的语法,海事组织。

但是,它在编译时会产生大量错误:

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

我是这样实施的:

  • 'helpers.Log.hpp':pragma曾经包含'easylogging++.h‘,并定义了名称空间助手>命名空间日志> void ()。
  • 'helpers.Log.cpp':'_INITIALIZE_EASYLOGGINGPP‘并按如下方式实现init(): el:conf配置(“./log_config.cfg”);el::记录器::reconfigureLogger(“默认”,conf);el:Loggers::reconfigureAllLoggers(Conf);

现在,只处理这两个文件,即日志记录。'engine.Core.hpp‘包括'helpers.Log.hpp’、'engine.Boot.hpp‘(现在空白)、'glload/gl_load.hpp’、'glload/gl_3_3.hpp‘以及在引擎命名空间中的核心类构造函数中调用init()函数。

在整个应用程序中不执行其他操作。仅此而已,日志系统的初始化,但它完全失败。

系统信息

OS:Windows 7 x64

IDE:Visual 2012

编译器: VS2012 (v110)

编译命令:cl /c /IF:/BTSync/prog_projs///c/IF:/DEV/SFML/21//IF:/DEV/GLSDK/052/glload//IF:/DEV/GLSDK/052/glutil/ /IF:/dev/GLSDK/052/glm /IF:/dev/GLSDK/052/glmesh/include /IF:/dev/BOOST/154 /IF:/DEV/LIBROCKET/121_CK3/包括/Zi /nologo- /W3 /WX- /Od /Ob0 /Oy- /D WIN32 /D _WINDOWS /D _DEBUG /D“CMAKE_INTDIR=\”Debug\“/D _MBCS /Gm- /EHsc /RTC1 _MBCS en21 en23#”en0#/Gd /TP /analyze /errorReport:prompt ..\src\engine.Boot.cpp ..\src\engine.Core.cpp ..\src\engine.Interfaces.cpp ..\src\helpers.Log.cpp ..\src\main.cpp

发布前的编辑:gl,所以看起来像'glload/gl_3_3.hpp‘是这里的问题。它成功地破坏了easylogging++。那已经超过我了。这怎么可能?我能做什么?

编辑以添加真实代码

engine.Core.hpp

代码语言:javascript
复制
#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

代码语言:javascript
复制
#include <engine.Core.hpp>

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

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

helpers.Log.hpp

代码语言:javascript
复制
#pragma once

#include <easylogging++.h>

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

helpers.Log.cpp

代码语言:javascript
复制
#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);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-12 18:32:06

我把它修正了

代码语言:javascript
复制
#include <Winsock2.h>

就在这之后:

代码语言:javascript
复制
#elif _ELPP_OS_WINDOWS
#   include <direct.h>
#   include <Windows.h>

在easylogging++.h中

它包含时间结构的定义。他们好像忘了这件事。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18368857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档