我啓動了一個OpenGL引擎,使用SFML作爲上下文和輸入管理器,GLSDK用於加載OpenGL(以及圖像和事情現在不重要)以及Boost for some other things。我一直在想'圍繞'日誌'的想法,並試圖Boost.Log(未能編譯一個例子,並且對問題的唯一引用未解決),Log4CPP(在啓動時給出了錯誤),最後easylogging ++的一切似乎都沒問題,它只是一個頭文件庫(horray!),它有一些整齊的語法IMO。GLSDK打破easylogging ++
但在編譯時,它提供一堆錯誤:
C2664: '厄爾尼諾::基地:: utils的日期時間:: :: gettimeofday的':無法從 '詮釋*' 到'轉換參數1埃爾::基地:: utils的::的timeval * '
C2228:左' .tv_usec」必須有類/結構/聯合
- C2227:左 ' - > tv_usec' 必須指向類/ struct/union/generic type
- C2079:'currTime'使用un定義結構 'EL ::基:: utils的::的timeval'
- C2027:使用未定義類型的 'EL ::基:: utils的::的timeval'
- 和一些更
我已經實現它是這樣的:
- 'helpers.Log.hpp':編譯一次,包括'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'包含'helper.Log.hpp','engine.Boot.hpp'(現在爲空),'glload/gl_load.hpp','glload/gl_3_3.hpp'以及構造函數核心類,在引擎名稱空間內調用init()函數。
在整個應用程序中沒有其他任何操作。這就是日誌系統的初始化,但它完全失敗。
系統信息
OS:Windows 7的64位
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:精確/ 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);
}
你能告訴我們一個能夠重現錯誤的最小代碼示例嗎? – AndyG
完成。這是我現在使用的文字代碼。刪除包含'glload/gl_3_3.hpp'解決了編譯錯誤。感謝您的關注。 –
當然,我仍然需要包含glload/gl_3_3.hpp和記錄器界面!所以它不能作爲解決方案。包括任何其他版本的OpenGL使easylogging ++失敗。 –