私は、SFML をコンテキストおよび入力マネージャーとして使用し、GLSDK を OpenGL (および画像や現在重要ではないもの) の読み込みに使用し、Boost を他のいくつかのものに使用して、OpenGL エンジンを開始しています。
私は「ロギング」のアイデアについて疑問に思っていました.Boost.Log(例のコンパイルに失敗し、問題への唯一の参照は未解決です)、Log4CPP(起動時にエラーが発生しました)を試してみましたが、最終的にすべてがうまくいったようです. easylogging ++で問題ありません.ヘッダーのみのライブラリ(万歳!)であり、いくつかのきちんとした構文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 型を指している必要があります
- C2079: 'currTime' は未定義の構造体 'el::base::utils::timeval' を使用しています
- C2027: 未定義の型 'el::base::utils::timeval' の使用
- そしてもう少し
私はこのように実装しました:
- 'helpers.Log.hpp': プラグマ ワンス。'easylogging++.h' をインクルードし、名前空間ヘルパー > 名前空間ログ > void 関数 init() を定義します。
'helpers.Log.cpp': '_INITIALIZE_EASYLOGGINGPP' であり、次のように init() を実装します。
el::Configurations conf("../log_config.cfg"); el::Loggers::reconfigureLogger("default", conf); el::Loggers::reconfigureAllLoggers(conf);
これで、これら 2 つのファイルだけが logging を処理します。「engine.Core.hpp」には、「helpers.Log.hpp」、「engine.Boot.hpp」(今は空白)、「glload/gl_load.hpp」、「glload/gl_3_3.hpp」が含まれ、エンジン名前空間内のコア クラスで、init() 関数が呼び出されます。
アプリケーション全体で他に何も行われません。それだけで、ログシステムの初期化ですが、完全に失敗します。
システムインフォメーション
OS : Windows7 x64
IDE : ビジュアル スタジオ 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 ++を壊すことができます。もう終わりです。それはどのように可能ですか?私に何ができる?
編集して実際のコードを追加
エンジン.コア.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();
};
}
エンジン.コア.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);
}