GLSDK打破了easylogging ++

时间:2013-08-21 22:37:32

标签: opengl logging glload easylogging++

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

我一直在想'围绕'日志记录'的想法,并尝试了Boost.Log(无法编译示例,并且唯一没有解决问题的参考),Log4CPP(在启动时出错)以及最后一切似乎很好用easylogging ++,是一个只有标题的库(horray!),它有一些巧妙的语法IMO。

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

  • C2664:'el :: base :: utils :: DateTime :: gettimeofday':无法将参数1从'int *'转换为'el :: base :: utils :: timeval *'

  • C2228:'。tv_usec'左边必须有class / struct / union

  • C2227:' - > tv_usec'左侧必须指向class / struct / union / generic type
  • C2079:'currTime'使用未定义的struct'el :: base :: utils :: timeval'
  • C2027:使用未定义类型'el :: base :: utils :: timeval'
  • 还有一些

我已经用这种方式实现了它:

  • 'helpers.Log.hpp':pragma一次,包括'easylogging ++。h'并定义命名空间助手>命名空间日志> void function 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()函数。

整个应用程序中没有其他任何操作。就是这样,日志系统的初始化,但它完全失败了。

系统信息

操作系统:Windows 7 x64

IDE :Visual Studio 2012

编译: VS2012(v110)

COMPILE COMMAND :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 /包括/ IF是:/ dev / BOOST / 154 / IF:/ DEV / LIBROCKET / 121_3 /包含/紫/ nologo- / W3 / WX-/ OD / OB0 / Oy- / d WIN32 / d _WINDOWS / d _DEBUG / d “CMAKE_INTDIR = \” 调试\ “”/ d _MBCS / GM-/ EHSC / RTC1 / MDD / GS / FP:精确/ ZC:wchar_t的/ ZC:forScope / GR / FO “KINGDOMS_0_1.dir \调试\”/的Fd “F:/BTSync/prog_projs/KINGDOMS/trunk/pro/Debug/KINGDOMS_0_1_d.pdb”/ GD / TP / analyze- / errorReport:提示.. \ 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);
}

1 个答案:

答案 0 :(得分:2)

我通过添加

修复了它
#include <Winsock2.h>

紧随其后:

#elif _ELPP_OS_WINDOWS
#   include <direct.h>
#   include <Windows.h>

在easylogging ++。h

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