問題タブ [spdlog]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 現在の spdlog レベルを取得するには?
一部のコードの前にspdlogレベルをオフにしてから、以前の値に戻す必要があります。
オフにする前に現在のレベルを取得するにはどうすればよいですか?
c++ - 動的にロードされたライブラリからのログ
「spdlog」ライブラリ ( https://github.com/gabime/spdlog )を使用してメッセージをログに記録できる C++ デスクトップ アプリがあります。ここで、動的にロードされた DLL から同じロガーを使用したいと考えています。ただし、DLL から spdlog を使用しようとすると、クラッシュします。
メインアプリと同じロガーを使用するように動的にロードされる DLL をセットアップするにはどうすればよいですか?
c++ - CMake プロジェクトで spdlog.h が見つからない
ヘッダーのみのログ ライブラリである spdlog を C++ プロジェクトに統合しようとしていますが、CMake でインクルード パスを正しく認識させるのに問題があります。Ubuntu 18.04 で CMake 3.10.2 で最新の CLion を使用しています。
私のプロジェクト構造は次のようになります:
Project Dir
|- libs
| |- spdlog #this is the include directory taken straight from GitHub
|
|- src
| |-...
|- CMakeLists.txt
ファイルCMakeLists.txt
では、インクルード ディレクトリを定義します。
include_directories("libs/")
CLion#include <spdlog/spdlog.h>
にあるヘッダー ファイルに書き込もうとすると、チェックしてもファイルが確実にフォルダー内にあるにもかかわらず見つからないというエラーが表示されます。インクルード ステートメントで山かっこの代わりに引用符を使用しても問題は解決しませんが、ファイルに対する相対パス (例: ) を使用すると問題なく機能します。私にとってさらに混乱しているのは、ヘッダーに対応するソースファイルに問題なくファイルを含めることができるということです。src/
spdlog.h
spdlog
../libs/spdlog/spdlog.h
この問題のようなものをどこにも見つけることができず、CMake または CLion がこのように動作する原因を理解するのに苦労しています。
編集:Matthieu Brucher の提案に従って、インクルード フォルダーへの完全修飾パスを使用しようとしましたが、まだ機能しません。問題は、フォルダーがソース ファイルで機能するため、ヘッダーで認識されないように見えることです。
CMakeLists.txt
EDIT2:これが私が使用している全体です。CMakeLists.txt
これは、CLion のソリューションで VS の複数のプロジェクトに似たものを取得するためにオンラインで見つけた唯一のソリューションであるため、プロジェクト全体の最上位レベルとは異なるディレクトリにネストされています。ただし、すべてのパスは相対的であるため、これが問題になるとは思いません。また、spdlog が C++11 ライブラリであることも知っていますが、近い将来、他の場所でいくつかの C++14 機能が必要になるでしょう。
EDIT3:エラーを再作成して完全なメッセージを表示しようとすると、エラーがなくなってしまい、CMake とはまったく関係のない別のものに置き換えられました...
c++ - ファクトリ メソッドで spdlog がクラッシュする
spdlog
昨日、ログに使用する個人的なプロジェクトに組み込み始めました。これまでのところ、ライブラリのインクルードを機能させるのにいくつか問題がありましたが、それらは完全に解決されました。
これで、すべてが正常にコンパイルされ、すべてのヘッダーが見つかりましたが、ロガーを作成しようとしたり、単にコードをログに記録するためのパターンを設定したりすると、セグメンテーション違反でクラッシュします。spdlog
より具体的には、プログラムで初めて名前空間からどの関数を呼び出しても、クラッシュが発生します。
次のように、(このspdlog
レポに基づいて)からいくつかの部分を抽象化するクラスがあります。
スタック トレースから、何らかの理由でライブラリ内のどこかに設定されているformatter
クラスに問題があるようです。最新の CLion である C++14 を使用しています (spdlog が C++11 であることは認識していますが、14 以降の機能が必要であり、-std=c++11 を設定しても問題は解決しません)。そして、 Ubuntu 18.04 上の昨日の最新バージョン(GitHub リポジトリから直接取得)。spdlog
null
spdlog
編集:コメントのリクエストに従って、小さなプロジェクトを作成しました(単一のcppファイル、実際のプロジェクトで行う方法、またはファイルから参照され、それに応じてリンクさspdlog
れた実際のプロジェクトと同じコードとライブラリのセットアップを含めますmain.cpp
) 問題を再現することを目的としており、ここに私の調査結果があります: *spdlog
実行可能ファイルで直接使用する場合、問題は存在しません * Logger クラスが共有ライブラリに移動され、そこからリンクされている場合、問題は存在します
これが私が得ているエラーメッセージです:
そして、私が使用している CMakeLists.txt ファイル (現在、CLion は VS のように「同じソリューション内の複数のプロジェクト」をサポートしていないため、ライブラリのファイルをプロジェクトにネストしています): #CMakeLists.txt for Library cmake_minimum_required(VERSION 3.10 FATAL_ERROR)