問題タブ [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.

0 投票する
3 に答える
4586 参照

c++ - 現在の spdlog レベルを取得するには?

一部のコードの前にspdlogレベルをオフにしてから、以前の値に戻す必要があります。

オフにする前に現在のレベルを取得するにはどうすればよいですか?

0 投票する
1 に答える
510 参照

c++ - 動的にロードされたライブラリからのログ

「spdlog」ライブラリ ( https://github.com/gabime/spdlog )を使用してメッセージをログに記録できる C++ デスクトップ アプリがあります。ここで、動的にロードされた DLL から同じロガーを使用したいと考えています。ただし、DLL から spdlog を使用しようとすると、クラッシュします。

メインアプリと同じロガーを使用するように動的にロードされる DLL をセットアップするにはどうすればよいですか?

0 投票する
2 に答える
5181 参照

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.hspdlog../libs/spdlog/spdlog.h

この問題のようなものをどこにも見つけることができず、CMake または CLion がこのように動作する原因を理解するのに苦労しています。

編集:Matthieu Brucher の提案に従って、インクルード フォルダーへの完全修飾パスを使用しようとしましたが、まだ機能しません。問題は、フォルダーがソース ファイルで機能するため、ヘッダーで認識されないように見えることです。

CMakeLists.txtEDIT2:これが私が使用している全体です。CMakeLists.txtこれは、CLion のソリューションで VS の複数のプロジェクトに似たものを取得するためにオンラインで見つけた唯一のソリューションであるため、プロジェクト全体の最上位レベルとは異なるディレクトリにネストされています。ただし、すべてのパスは相対的であるため、これが問題になるとは思いません。また、spdlog が C++11 ライブラリであることも知っていますが、近い将来、他の場所でいくつかの C++14 機能が必要になるでしょう。

EDIT3:エラーを再作成して完全なメッセージを表示しようとすると、エラーがなくなってしまい、CMake とはまったく関係のない別のものに置き換えられました...

0 投票する
2 に答える
2424 参照

c++ - ファクトリ メソッドで spdlog がクラッシュする

spdlog昨日、ログに使用する個人的なプロジェクトに組み込み始めました。これまでのところ、ライブラリのインクルードを機能させるのにいくつか問題がありましたが、それらは完全に解決されました。

これで、すべてが正常にコンパイルされ、すべてのヘッダーが見つかりましたが、ロガーを作成しようとしたり、単にコードをログに記録するためのパターンを設定したりすると、セグメンテーション違反でクラッシュします。spdlogより具体的には、プログラムで初めて名前空間からどの関数を呼び出しても、クラッシュが発生します。

次のように、(このspdlogレポに基づいて)からいくつかの部分を抽象化するクラスがあります。

スタック トレースから、何らかの理由でライブラリ内のどこかに設定されているformatterクラスに問題があるようです。最新の CLion である C++14 を使用しています (spdlog が C++11 であることは認識していますが、14 以降の機能が必要であり、-std=c++11 を設定しても問題は解決しません)。そして、 Ubuntu 18.04 上の昨日の最新バージョン(GitHub リポジトリから直接取得)。spdlognullspdlog

編集:コメントのリクエストに従って、小さなプロジェクトを作成しました(単一のcppファイル、実際のプロジェクトで行う方法、またはファイルから参照され、それに応じてリンクさspdlogれた実際のプロジェクトと同じコードとライブラリのセットアップを含めますmain.cpp) 問題を再現することを目的としており、ここに私の調査結果があります: *spdlog実行可能ファイルで直接使用する場合、問題は存在しません * Logger クラスが共有ライブラリに移動され、そこからリンクされている場合、問題は存在します

これが私が得ているエラーメッセージです:

そして、私が使用している CMakeLists.txt ファイル (現在、CLion は VS のように「同じソリューション内の複数のプロジェクト」をサポートしていないため、ライブラリのファイルをプロジェクトにネストしています): #CMakeLists.txt for Library cmake_minimum_required(VERSION 3.10 FATAL_ERROR)