ACE(Adaptive Communication Environment) 関連

目次

リンクなど
インストールについて
コンパイル済みバイナリ
チュートリアル私家日本語訳版
ACE プログラマーズガイド
Top

リンクなど


インストールについて

ACE のコンパイルですが、上の「C++ で開発 インストール」サイトを参考にしてみたところ、Cygwin ではうまくいったのですが、MinGW32 では駄目でした。
Web で検索したところ、添付のマニュアル通りにすると成功したという記事があったので、早速アーカイブに入っていたマニュアルを読みながら試してみました。
すると、こちらでも Win32-MinGW での方法はうまくいきませんでした。

他に何か無いかと思って、マニュアルを読んでいたところ、Unix 系統でのインストールに ./configure & make をする方法があったので、そちらも駄目で元々ということで試してみました。
./configure は無事に終わったのですが、make の段階で typedef の重複エラーが発生し、結局失敗となりました。

もう少し試してみて、うまくいったら報告したいと思います。

続報です。エラーメッセージを見てるうち、何となく思い付いてソースコードを確認したところ、エラーに該当する typedef 文が #if defined で囲まれていたので、そのシンボルを #undef してみました。
すると、それだけでコンパイルが通るようになり、無事にビルドが完了しました。

うまくいった時のMinGW設定は以下のようになります。
ace/config.h
// -*- C++ -*-
#ifndef ACE_CONFIG_H
#define ACE_CONFIG_H

#define ACE_HAS_STANDARD_CPP_LIBRARY 1
#include "ace/config-win32.h"

#undef ACE_LACKS_USECONDS_T // この行を追加
#endif /* ACE_CONFIG_H */
include/makeinclude/platform_macros.GNU
include $(ACE_ROOT)/include/makeinclude/platform_mingw32.GNU
上記の設定を行い、ACE_wrappers フォルダ以下に build フォルダを作って、その中に移動してから「../configure」「make」でコンパイルできました。
ACE_wrappers フォルダを環境変数 ACE_ROOT に指定して、ACE_wrappers フォルダ中で「make static_libs=1」をすることでコンパイルできました。

追記 2009/06/10
openssl を入れて ACE_SSL を利用したかったので、configure オプションに以下を追加して、再度ビルドしました。
..configure --with-openssl-include=/usr/include --with-openssl-libdir=/usr/lib
しかしながら、これでビルドすると途中でエラー終了してしまいました。
この後 ACE_wrappers/ace で「make ssl=1 static_libs=1」を実行すると、該当フォルダ内に libACE.a、libACE.dll、libACE.dll.a の3ファイルが生成されます。
これらをライブラリフォルダへコピーしてやり、*.h・*.i・*.inl・*.cppをインクルードフォルダへコピーすればライブラリの導入は完了となります。
ACE_SSL につきましても、同様に ACE_wrappers/ace/SSL の中に libACE_SSL.{a,dll,dll.a}の3ファイルが生成されていますので、こちらをライブラリフォルダへコピーし、フォルダ中の *.h、*.i、*.inl をインクルードフォルダへコピーすればよいです。

コンパイル済みバイナリ

上で書いたように ACE 自身のコンパイルも結構大変なので、私がビルドしたバイナリを以下に置いておきます。
解凍した後、インクルードフォルダとライブラリフォルダにそれぞれコピーして利用してください。
私自身、まだよく分からずにパッケージングしていますので、足りないファイルなどありましたら、ご連絡いただければと思います。

ACE チュートリアル 私家日本語訳

原文はこちらだったのですが、サイトが消えてしまったようです。
コピーがこちらになります。これはここから取得しました。

基本的なサーバとクライアントについて

1.シンプルなサーバ
2.さらにシンプルなサーバ
3.最後にクライアント
4.よりクールなクライアント

並行処理について

5.スレッド無し、飾り気無し、でも動く
6.接続ごとにスレッドを割り当てたい
7.リソースをプールしよう、固定サイズのスレッドプール(翻訳中)

ネットワークからサーバを発見するには

8.全部のサーバを呼ぼう(未訳)
9.違いを見分ける(未訳)

ACE_Message_Queueについて

10.データの入れ方(未訳)
11.複雑な構成のデータについては?(未訳)
12.ポインタの入れ方(未訳)
13.タスクチェインと状態マシン(未訳)

ACE_Streamの使い方

14.一種の ACE_Stream チュートリアル(未訳)
15.ちゃんとしたプロトコルが必要だ!(未訳)

同期を保とう

16.ある状態があって…(未訳)
17.バリアに関するいくつかのこと(未訳)
18.トークンとテンプレート(未訳)

まだ覚えてるかい?

19.SystemV 共有メモリによるテレパシー(未訳)
20.Never forget anything else again!(未訳)
21.ACE_Malloc によるメモリプーリング(未訳)

動的なコンポーネント設定

22.ACE_Service_Configurator フレームワークを使うには(未訳)

ACE プログラマーズガイド

英語版の解説書 ACE Programmer's guide を章ごとに大雑把に翻訳しています。
何かの参考になれば幸いです。
プログラマーズガイド 抜粋訳

Top