- ベストアンサー
VC++ 2010でlog4cxxビルドできない
- Windows7 + VC++ 2010 Expressでlog4cxxのビルドができず困っています。
- log4cxx本家の手順を参考にして環境構築をしていますが、ビルドの段階までいけずにエラーが発生します。
- VC++ 2010 + log4cxxでビルドできた方いらっしゃいますか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
なるほど。VC++2008ではうまくいくということですね。 ANo2の回答は、その文中のリンク先(Daniel's post)との合わせ技でうまくいくようです。 そのDanielの投稿を見ると、VC++2010でビルドするには、まずソースコードの改編が必要なことを主張しているようです。(1,2,3) 1. Move all those LOG4CXX_LIST_DEF macros before the class definition. in telnetappender.h you will also need to move the typedef that precedes this macro. 2. If the compiler complains about KeySet not being member of LoggingEvent, just remove the scope (since we moved the type to outside the class in the previous step, these types no longer are inside the class) ex: change: LoggingEvent::KeySet set; to: KeySet set; 3. If the compiler complains about insert_iterator not being in the namespace std, add #include <iterator> to the include section of the source file これらの対策を施した日本の方のページがありました。 http://infotech.fmfamily.net/modules/blog/details.php?bid=84 ご参考までに。 4. For some reason the VS2010 converter 'forgot' to reference the lib files from apr,apr-util and xml, so i had to add them manually. そして、なぜだかわからないが、VS2010のコンバーターは、libfilesのリファレンスを忘れるので、手動で追加しなければならないとも。 元記事に戻ると、コメント中に以下のコメントを発見しました。 X12334Nov 18, 2011 02:08 AM works great when I combine this with Daniel post and convert the apr.dsw and apr-util.dsw files before opening log4cxx.dsw. I also needed to use log4cxx.h and log4cxx_private.h from trunk in SVN これによると、log4cxx.dsw以外のdswを先にconvert・コンパイルしてから、その、libfilesを手動で追加しなければならないということかなあと読みました。 いずれにせよ、ソースの改編、プロジェクトの構成を手助けしてあげないと、 ビルドできないということみたいですね。 解決したり試してみる価値があるかどうか、私にはわかりませんが、 ただの問題ではなさそうだという風には感じました。
その他の回答 (5)
- hidebun
- ベストアンサー率50% (92/181)
ちなみに、 >一旦VC++2008でアップデートしてから VC++2008でなら、ビルドまで漕ぎ着けるということでしょうか?
補足
はい、VC++2008ではビルドできています。 今回は、VC++2010の環境で使用したいので、トライしていますが、Ano.2のURLでは、VC++2010で問題なくビルドできているようなので、私の環境固有の問題なのかもしれません。 せめてエラーの詳細が分かれば調べられるのですが、、、もう少し調べてみます。
- hidebun
- ベストアンサー率50% (92/181)
参考までに、WindowsXP、VC++2005ですが、 C:\temp\apache-log4cxx-0.10.0 C:\temp\apr C:\temp\apr-util という構成で、 1.apache-log4cxx-0.10.0\configure.batを実行 2.sedが入っていないため、手動でソースを修正(LDAP, ICONVを無効) 3.log4cxx.dswをダブルクリック。 プロジェクトの変換について尋ねられるので、何度かYESを選択。 4.ビルド で、1ファイルのコンパイルエラーが出ますが、 設定で回避できそうなエラーが1つだけ出る状態になりました。 === コンパイルしています... odbcappender.cpp ..\src\main\cpp\odbcappender.cpp(33) : fatal error C1083: include ファイルを開けません。'sqlext.h': No such file or directory === >'C:\log4cxarp\apr.dsp'を読み込めません。 そもそも、C:\log4cxarpというディレクトリ名はどこから入り込んだ情報でしょう? apr.dspは、apr\apr.dspにあるはずで、log4cxarp\arp.dspにはないはずです。 ディレクトリが3つ(ないし4つ?)、並列に並んでいますか? 私は、下記をダウンロードしてC:\tempに解凍したものを、リネームしています。 apr-util-1.2.10-win32-src.zip(-->apr-util) apr-1.2.12-win32-src.zip(-->apr) apache-log4cxx-0.10.0.zip
- hidebun
- ベストアンサー率50% (92/181)
> はい。質問欄には書きませんでしたが、arp, arp-util, arp-iconvのダウンロード・リネームと arp, arp-util, arp-iconvと書かれていますが、apr(rとpが逆)の打ち間違いですよね? ディレクトリ名が間違えていると、うまくいかないと思うので、念のため。
補足
ご指摘の通り打ち間違えです(タイプミス)です。 ANo.2のURLには、apr-iconvを使用していなかったので、apr-iconv無しの以下の構成でも試してみましたがダメでした。。 apache-log4cxx-0.10.0 apr apr-util
- hidebun
- ベストアンサー率50% (92/181)
補足
リンク先より抜粋です。バージョン番号も合わせましたがダメでした。。 -- Building log4cxx.dll Now we have to convert *.dsw to *.cxproj. In order to make it smooth, you may launch Visual Studio 2010 and open log4cxx.dsw. VS will ask if you like to convert everything. Simply click Yes. →log4cxx.dswを開くとコンバートするか聞かれます。YESを選択します。 xml, apr, and apr-util projects may build without any problem. 問題無くビルドできるようにかかれていますが、ここまでいきません。 正確には、”プロジェクトファイル 'C:\log4cxarp\apr.dsp'を読み込めません。読み込めないプロジェクトをソリューションから削除しますか? のダイアログが出ます。いいえを選択しても利用不可となります。
- hidebun
- ベストアンサー率50% (92/181)
aprやapr-utilのダウンロードおよびフォルダのリネームは終わっているのですね?
補足
はい。質問欄には書きませんでしたが、arp, arp-util, arp-iconvのダウンロード・リネームとビルドに必要なsedのインストールは終わっています。 その後に、apache-log4cxx-0.10.0のディレクトリで、 configure.bat configure-aprutil.bat も実行済みです。上記の手順を実施したうえで C:\log4cxx\apache-log4cxx-0.10.0\projects log4cxx.dsw を開くと、質問欄に記載したエラーが出ます。
お礼
色々調べて頂いてありがとうございます。 最初は、手順の問題かと思っていましたが、突き詰めるとソース・プロジェクトの修正が必要なんですね。。今回は、別の方法を考えます。 #文中のリンク先に置いてある修正済みのソース(無保証?とは書いてありましたが)で、VC++2010でコンパイルできることは確認できました。 http://infotech.fmfamily.net/modules/blog/details.php?bid=84