我正在启动一个 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 function init()。
'helpers.Log.cpp': '_INITIALIZE_EASYLOGGINGPP' 并实现 init() 如下:
el::Configurations conf("../log_config.cfg"); el::Loggers::reconfigureLogger("default", conf); el::Loggers::reconfigureAllLoggers(conf);
现在,只有这两个文件处理 logging。“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/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++。那是我的事。这怎么可能呢?我能做些什么?
编辑以添加真实代码
引擎.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();
};
}
引擎.Core.cpp
#include <engine.Core.hpp>
engine::Core::Core()
{
helpers::log::init();
}
engine::Core::~Core()
{
}
助手.Log.hpp
#pragma once
#include <easylogging++.h>
namespace helpers
{
namespace log
{
void init();
}
}
助手.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);
}