質問: 当方、今までC#の経験のみで、C++初心者(2日目)です。 ほぼ触ったことがないので、細かい部分も教えていただきたいです。 C++を使用して試しにログを出力するプログラムを作成しています。 以下のサイトを参考にlog4C++で作成しておりますが、コンパイル エラーが消えずに困っています。 http://qiita.com/hsagae/items/d7b0cf6ee876b636b3b9 上記サイトの「準備」にてlog4cpp.libとlogcpp.dllは作成しました。 複数ありますが、現在発生しているコンパイルエラーは、 Log.hのincludeの箇所で以下のエラーが出ています。 IntelliSense: ソース ファイルを開けません "log4cpp/PropertyConfigurator.hh" ==質問1== ライブラリの追加方法が間違えているのかもしれないので確認です。 プロジェクトのプロパティページの[リンカー]-[入力]にて、 追加の依存ファイルにlog4cpp.libを追加しています。 生成したlog4cpp.libを追加ライブラリとして指定する際、 元から入力されていたライブラリの後に以下のように追加 しています。この指定方法は正しいのでしょうか。 kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;log4cpp.lib;%(AdditionalDependencies) また、log4cpp.libは生成はしましたが、どこかに格納 しなくてはいけないのでしょうか。ライブラリの名前を 入力しているだけで、パス設定をしていないので、 きちんとlog4cpp.libのファイルを見ることが出来て いるのかが不明です・・。 ==質問2== ログ出力フォーマットファイル(log4cpp.properties)を 用意とありますが、作り方がわからなかったため、 ソースファイルを右クリックし、追加でtxt形式を選択し、 log4cpp.propertiesファイルを作成→上記Webに記載の フォーマット内容をそのままコピペしましたが、 手順としてはこれで問題ないでしょうか。 ==質問3== Base.cppやDerived.cppを作成するさい、クラスとして 作成しています。この時ヘッダーファイル(.h)も自動で 作成されていますが、これは問題ないでしょうか。 幾つかサイトを回っていたのですが、実施内容が間違えて いるのかどうかも判断がつかずどこから手をつけていいか わからなくなったため、ここで質問をさせていただきました。 よろしくお願いいたします。
回答: > > IntelliSense: ソース ファイルを開けません "log4cpp/PropertyConfigurator.hh" > > > これですが、単にIntelliSenseがしくっている可能性もありますが、通常はインクルードパスが通っていないエラーと思われます。VS2013のインクルードパス設定でこのファイルにアクセスできるかどうか確かめたほうが良いでしょう。 > > 生成したlog4cpp.libを追加ライブラリとして指定する際、 > > 元から入力されていたライブラリの後に以下のように追加 > > しています。この指定方法は正しいのでしょうか。 > > > 指定の仕方はあってますが、ライブラリパスの設定でパスが通ってなければリンク時にエラーになります。 ライブラリはライブラリパスさえ通っていればどこに入れておいてもOKです。 > > Base.cppやDerived.cppを作成するさい、クラスとして > > 作成しています。この時ヘッダーファイル(.h)も自動で > > 作成されていますが、これは問題ないでしょうか。 > > > クラスWizardを使って作成するとそうなりますね。C#は.csファイルだけですが、C++の場合はヘッダーとソースファイルに分かれます。(ヘッダーだけで書いてしまう手もありますがインライン展開になるのと、長くなると見づらくなるので、通常は.hにクラス定義を.cppに実装を記述します) なお、私は普段はWizardは使わずに、自分でヘッダーファイルやソースファイルを作成してコツコツと組み込むことが多いです。 C#をやっていたということで、log4NETは使っていたんでしょうか?それならコンパイルとリンクさえ出来たら後は使い方は基本的に同じなはずなのでそれほどではないかもしれませんが、log4C++は、C++を触ったことのない人にとっては結構敷居が高いかもしれません。 簡単なもので良ければ、C++ でロガーっぽい何かの様なものを利用する手があります。(他にも探せばあるかと) 私も上記のようなネットに転がってる簡単なものを最初使ってましたが、色々とやりたいことが出てきたために、今は、boostライブラリのBoost.Logを使っています。 log4XXも検討したのですが、DLLを添付しないといけないとかがあったので、完全に組み込んでしまえるboostライブラリを今は使用しています。