Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl GLSDK打破了easylogging++;_Opengl_Logging_Glload_Easylogging++ - Fatal编程技术网

Opengl GLSDK打破了easylogging++;

Opengl GLSDK打破了easylogging++;,opengl,logging,glload,easylogging++,Opengl,Logging,Glload,Easylogging++,我正在启动一个OpenGL引擎,使用SFML作为上下文和输入管理器,使用GLSDK加载OpenGL(以及现在不重要的图像和内容),并使用Boost加载其他内容 我一直在想“日志记录”的想法,并尝试了Boost.Log(未能编译一个示例,唯一的问题是没有解决)、Log4CPP(在启动时出现错误)以及easylogging++,作为一个只有头的库(horray!),它有一些简洁的语法 但在编译时会出现一系列错误: C2664:'el::base::utils::DateTime::gettimeo

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

我一直在想“日志记录”的想法,并尝试了Boost.Log(未能编译一个示例,唯一的问题是没有解决)、Log4CPP(在启动时出现错误)以及easylogging++,作为一个只有头的库(horray!),它有一些简洁的语法

但在编译时会出现一系列错误:

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

  • C2228:“.tv_usec”的左侧必须具有类/结构/联合

  • C2227:“->tv_usec”的左侧必须指向class/struct/union/generic类型
  • C2079:“currTime”使用未定义的结构“el::base::utils::timeval”
  • C2027:使用未定义的类型“el::base::utils::timeval”
  • 还有更多
我是这样实施的:

  • “helpers.Log.hpp”:pragma一次,包括“easylogging++.h”,并定义名称空间helpers>名称空间日志>void函数init()
  • “helpers.Log.cpp”:“\u INITIALIZE\u 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)

编译命令:cl/c/IF:/BTSync/prog_-projs/kingdes/trunk/inc/IF:/dev/SFML/21/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\u 3/include/Zi/nologo-/W3-/w3od-/Ob0/Oy-/D WIN32/D\u WINDOWS/D\u DEBUG/D“CMAKE\u INTDIR=\“DEBUG\”/D\u MBCS/Gm-/EHsc/RTC1/MDd/GS/fp:precise/Zc:wchar\u t/Zc:forScope/GR/Fo“kinders\u 1.dir\DEBUG\”/Fd“F:/BTSync/projs/kinders/kinders/kinders/kinders/trunk/projs/kinders\u 1.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++。我受够了。这怎么可能呢?我能做什么

编辑以添加真实代码

引擎核心hpp

#pragma一次
#包括
#包括
#包括
名称空间引擎
{
类核心
{
公众:
核心();
~Core();
};
}
引擎.Core.cpp

#包括
引擎::核心::核心()
{
helpers::log::init();
}
引擎::核心::~Core()
{
}
helpers.Log.hpp

#pragma一次
#包括
命名空间帮助程序
{
名称空间日志
{
void init();
}
}
helpers.Log.cpp

#包括
_初始化_EASYLOGGINGPP
void helpers::log::init()
{
el::Configurations(“../log_config.cfg”);
el::Loggers::reconfigureLogger(“默认”,conf);
el::记录器::重新配置记录器(conf);
}
我通过添加

#include <Winsock2.h>
#包括
紧接着:

#elif _ELPP_OS_WINDOWS
#   include <direct.h>
#   include <Windows.h>
#elf(ELPP)操作系统(WINDOWS)
#包括
#包括
在easylogging++.h中


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

您能给我们展示一个复制错误的最小代码示例吗?完成。我现在使用的是文字代码。删除“glload/gl_3_3.hpp”的包含项可解决编译错误。谢谢你的关注。当然,我仍然需要包括glload/gl_3_3.hpp和记录器界面!所以不能把它作为解决方案。包含任何其他版本的OpenGL都会导致easylogging++失败。看起来它与跨平台日期时间函数有冲突。您使用的是什么编译器和操作系统?你能发送编译命令吗?我已经在主要问题中添加了信息。谢谢你的关注!是的,这对我不起作用,它只会造成500多个错误。我真的很困惑为什么头球后卫没有在这里完成他们的工作,但是我真的对EasyLogg++的唯一问题感到厌倦,即使这不一定是它的错。
#pragma once

#include <easylogging++.h>

namespace helpers
{
    namespace log
    {
        void init();
    }
}
#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>