[ C++で開発 ] [ TAO CORBA実装 ]
ACE 5.3.1 + TAO 1.3.1を、Windows 2000 OS上にVisual C++ 6.0コンパイラでインストールしたときの記録。
Visual C++用プロジェクトファイルがソースと一緒に配布されています。これを用いれば簡単にインストールすることができます。
TAOのソースを入手します。
作業ディレクトリとして仮にF:\tmpの下に展開します。
torutk$ cd /cygdrive/f/tmp tmp$ tar xvjf ACE+TAO.tar.bz2 : tmp$ ls -F ACE_wrappers/ tmp$
ACE_wrapers\ace\config.h というファイルを新規に作成します。
      // -*- C++ -*- #ifndef ACE_CONFIG_H #define ACE_CONFIG_H //#define ACE_HAS_WINNT4 0 #define ACE_HAS_STANDARD_CPP_LIBRARY 1 #define ACE_HAS_ANSI_CASTS 1 #include "ace/config-win32.h" #endif /* ACE_CONFIG_H */  | 
    
ここで記述していないシンボル
VC++の場合は不要です。
以下のワークスペースファイルが用意されています。ACEをビルドしていなければ、TAOACE.dswを使用します。ACEとTAOと別々にビルドするならば、ACEのビルドにはace.dswを、TAOのビルドにはTAO.dsw[*1]を使用します。
[*1] TAO1.3以降のTAO.dswはビルドが通らないので、最近のバージョンをビルドするときは、TAOACE.dswを使用した方がよいでしょう。
[*2] TAO1.4には、TAOACE.dswが含まれていません。TAOACE.mwcからmpcツールを使ってdswを生成する手順が必要になります。
| ワークスペースファイル | 場所 | 内容 | 
|---|---|---|
| ace.dsw | ACE_wrappers\ace | ACEコアをビルドする | 
| TAO.dsw | ACE_wrappers\TAO\tao | TAOの中核をビルドする(ACE、ツール、サービスは含まない) | 
| tao_idl.dsw | ACE_wrappers\TAO\TAO_IDL | IDLコンパイラをビルドする | 
| TAOACE.dsw | ACE_wrappers\TAO | ACE全部およびTAO全部をビルドする | 
| TAOACE_Static.dsw | ACE_wrappers\TAO | |
| CosEvent_Service.dsw | ACE_wrappers\TAO\orbsvcs\CosEvent_Service | TAOイベントサービス | 
TAO.dswをビルドするのですが、このプロジェクト設定では、ACEが先にビルドされ、別なディレクトリにインストールされている場合に対応できていません。ACEのインクルードファイルやライブラリファイルが全てACE+TAOを展開した中にあることを想定して記述されています。そこで、Visual C++の共通設定にACEのパスを追加します。
[ツール]メニューから[オプション]を選択します。オプションダイアログが開かれるので、[ディレクトリ]タブを選択します。[表示するディレクトリ]リストボックスから、インクルードファイル、ライブラリファイルの2つを設定します。
| 表示するディレクトリ | ディレクトリに追加する内容 | |
|---|---|---|
| インクルードファイル | D:\lib\ace\include | |
| ライブラリファイル | D:\lib\ace\lib | |
| 実行可能ファイル | D:\lib\ace\bin | 
注)ACEがD:\lib\aceにインストールしてある場合
3.のconfig.hの編集で、ACE_HAS_ANSI_CASTSを有効にした場合、以降ビルドする全てのプロジェクト設定にRTTIを有効にする設定追加を行います。[プロジェクト]メニューから[設定]を選ぶと、プロジェクトの設定ダイアログが表示されます。設定の対象欄で[すべての構成]を選び、プロジェクトすべてを選択状態にします。次に右側のC/C++タブを選び、カテゴリ欄を[C++言語]に指定し、[ランタイムタイプ情報(RTTI)を有効にする]をチェックします。
VC++7.1用プロジェクトでは、RTTIはデフォルトで有効になっています。
TAOのIDLコンパイラなどでgperfコマンドを使用します。まだビルドされていなければ、先にgperfをビルドします。ビルド方法については、ACEインストールのページを参照。なお、Cygwinに含まれるgperfではコマンドラインオプション等の違いでうまく利用できません。(環境変数PATHにCygwinの実行ファイルが含まれているとCygwinのgperfが呼び出されます。環境変数PATHから除いておくか、VC++の実行可能ディレクトリリストから削除します。)
TAO.dswには、CORBAの中核となる29のプロジェクトが含まれています。(TAOソース構成を参照)
全てをビルドしても使用するものはごく一部なのですが、ここではリアルタイム以外のものをビルドしていきます。
| プロジェクト種類 | ビルド対象 | |
| BiDirGIOP | Yes | |
| Domain | Yes | |
| DynamicAny | Yes | |
| DynamicInterface | Yes | |
| IFR_Client | Yes | |
| IORManip | Yes | |
| IORTable | Yes | |
| Messaging | Yes | |
| PortableServer | Yes | |
| RTCORBA | No | |
| RTPortableServer | No | |
| RTScheduler | ||
| SmartProxies | No | |
| TAO | Yes | |
| TAO_Strategies | Yes | |
| TypeCodeFactory | Yes | 
プロジェクトを見ると、設定名にWin32 MFC ReleaseやWin32 MFC Debugというのがあります。これは、ACE/TAOのソースコードが、MFCを使う場合/使わない場合で異なるためです。例えば、内部でのスレッド生成にCWinThreadを使用する等です。
TAO1.3.3では、配布されているTAO.dswではビルドできません。ビルドを試みた経過をこちらにメモしました。
| プロジェクト名 | 設定名 | 内容 | 
|---|---|---|
| BiDirGIOP | Win32 Release | TAOの双方向IIOPのDLLを生成する | 
| Win32 Debug | ||
| Win32 MFC Release | ||
| Win32 MFC Debug | ||
| BiDirGIOP_Static | Win32 Static Release | TAOの双方向IIOPのスタティックリンクライブラリを生成する | 
| Win32 Static Debug | ||
| Domain | Win32 Release | ドメインのDLLを生成する | 
| Win32 Debug | ||
| Domain_Static | Win32 Static Release | ドメインのスタティックリンクライブラリを生成する | 
| Win32 Static Debug | ||
| DynamicAny | Win32 Release | DynAnyのDLLを生成する | 
| Win32 Debug | ||
| Win32 MFC Release | ||
| Win32 MFC Debug | ||
| DynamicAny_Static | Win32 Static Release | DynAnyのスタティックリンクライブラリを生成する | 
| Win32 Static Debug | ||
| DynamicInterface | Win32 Release | 動的起動インタフェースのDLLを生成する | 
| Win32 Debug | ||
| Win32 MFC Release | ||
| Win32 MFC Debug | ||
| DynamicInterface_Static | Win32 Static Release | 動的起動インタフェースのスタティックリンクライブラリを生成する | 
| Win32 Static Debug | ||
| IRF_Client | Win32 Release | インタフェースリポジトリ(IFR)のクライアントのDLLを生成する | 
| Win32 Debug | ||
| Win32 MFC Release | ||
| Win32 MFC Debug | ||
| IRF_Client_Static | Win32 Static Release | インタフェースリポジトリ(IFR)のクライアントのスタティックリンクライブラリを生成する | 
| Win32 Static Debug | ||
| IORManip | Win32 Release | DLLを生成する | 
| Win32 Debug | ||
| Win32 MFC Release | ||
| Win32 MFC Debug | ||
| IORManip_Static | Win32 Static Release | スタティックリンクライブラリを生成する | 
| Win32 Static Debug | ||
| IORTable | Win32 Release | DLLを生成する | 
| Win32 Debug | ||
| Win32 MFC Release | ||
| Win32 MFC Debug | ||
| IORTable_Static | Win32 Static Release | スタティックリンクライブラリを生成する | 
| Win32 Static Debug | ||
| TAO DLL | Win32 Release | TAOのORBコアのDLLを生成する | 
| Win32 Debug | ||
| Win32 MFC Release | ||
| Win32 MFC Debug | ||
| TAO LIB | Win32 Static Release | TAOのORBコアのスタティックリンクライブラリを生成する | 
| Win32 Static Debug | ||
| PortableServer | Win32 Release | POAのDLLを生成する | 
| Win32 Debug | ||
| Win32 MFC Release | ||
| Win32 MFC Debug | ||
| PortableServer_Static | Win32 Static Release | POAのスタティックリンクライブラリを生成する | 
| Win32 Static Debug | ||
| Messaging | Win32 Release | QoSメッセ-ジングのDLLを生成する | 
| Win32 Debug | ||
| Win32 MFC Release | ||
| Win32 MFC Debug | ||
| Messaging_Static | Win32 Static Release | QoSメッセ-ジングのスタティックリンクライブラリを生成する | 
| Win32 Static Debug | ||
| TAO_Strategies | Win32 Release | DLLを生成する | 
| Win32 Debug | ||
| TAO_Strategies_Static | Win32 Static Release | スタティックリンクライブラリを生成する | 
| Win32 Static Debug | ||
| TypeCodeFactory | Win32 Release | DLLを作成する | 
| Win32 Debug | ||
| Win32 MFC Release | ||
| Win32 MFC Debug | ||
| TypeCodeFactory_Static | Win32 Static Release | スタティックリンクライブラリを作成する | 
| Win32 Static Debug | 
| ディレクトリ | ライブラリファイル | 種類 | 
|---|---|---|
| ACE_wrappers\bin\ | TAO.dll TAOd.dll TAOmfc.dll TAOmfcd.dll TAO_BinDirGIOP.dll TAO_BinDirGIOPd.dll TAO_BinDirGIOPmfc.dll TAO_BinDirGIOPmfcd.dll TAO_Domain.dll TAO_Domaind.dll TAO_DynamicAny.dll TAO_DynamicAnyd.dll TAO_DynamicAnymfc.dll TAO_DynamicAnymfcd.dll TAO_DynamicInterface.dll TAO_DynamicInterfaced.dll TAO_DynamicInterfacemfc.dll TAO_DynamicInterfacemfcd.dll TAO_IFR_Client.dll TAO_IFR_Clientd.dll TAO_IFR_Clientmfc.dll TAO_IFR_Clientmfcd.dll TAO_IORManip.dll TAO_IORManipd.dll TAO_IORManipmfc.dll TAO_IORManipmfcd.dll TAO_IORTable.dll TAO_IORTabled.dll TAO_IORTablemfc.dll TAO_IORTablemfcd.dll TAO_Messaging.dll TAO_Messagingd.dll TAO_Messagingmfc.dll TAO_Messagingmfcd.dll TAO_PortableServer.dll TAO_PortableServerd.dll TAO_PortableServermfc.dll TAO_PortableServermfcd.dll TAO_Strategies.dll TAO_Strategiesd.dll TAO_TypeCodeFactory.dll TAO_TypeCodeFactoryd.dll TAO_TypeCodeFactorymfc.dll TAO_TypeCodeFactorymfcd.dll  | 
      動的リンクライブラリファイル | 
| ACE_wrappers\TAO\tao | TAO.lib TAOd.lib TAOmfc.lib TAOmfcd.lib  | 
      インポートライブラリファイル | 
| TAOs.lib TAOsd.lib  | 
      スタティックリンクライブラリファイル | |
| ACE_wrappers\TAO\tao\BiDir_GIOP | TAO_BiDir_GIOP.lib TAOBiDir_GIOPd.lib TAO_BiDir_GIOPmfc.lib TAO_BiDir_GIOPmfcd.lib  | 
      インポートライブラリファイル | 
| TAO_BiDir_GIOPs.lib TAO_BiDir_GIOPsd.lib  | 
      スタティックリンクライブラリファイル | |
| ACE_wrappers\TAO\tao\Domain | TAO_Domain.lib TAO_Domaind.lib  | 
      インポートライブラリファイル | 
| TAO_Domains.lib TAO_Domainsd.lib  | 
      スタティックリンクライブラリファイル | |
| ACE_wrappers\TAO\tao\DynamicAny | TAO_DynamicAny.lib TAO_DynamicAnyd.lib TAO_DynamicAnymfc.lib TAO_DynamicAnymfcd.lib  | 
      インポートライブラリファイル | 
| TAO_DynamicAnys.lib TAO_DynamicAnysd.lib  | 
      スタティックリンクライブラリファイル | |
| ACE_wrappers\TAO\tao\DynamicInterface | TAO_DymamicInterface.lib TAO_DymamicInterfaced.lib TAO_DymamicInterfacemfc.lib TAO_DymamicInterfacemfcd.lib  | 
      インポートライブラリファイル | 
| TAO_DymamicInterfaces.lib TAO_DymamicInterfacesd.lib  | 
      スタティックリンクライブラリファイル | |
| ACE_wrappers\TAO\tao\IFR_Client | TAO_IFR_Client.lib TAO_IFR_Clientd.lib TAO_IFR_Clientmfc.lib TAO_IFR_Clientmfcd.lib  | 
      インポートライブラリファイル | 
| TAO_IFR_Clients.lib TAO_IFR_Clientsd.lib  | 
      スタティックリンクライブラリファイル | |
| ACE_wrappers\TAO\tao\IORManipulation | TAO_IORManip.lib TAO_IORManipd.lib TAO_IORManipmfc.lib TAO_IORManipmfcd.lib  | 
      インポートライブラリファイル | 
| TAO_IORManips.lib TAO_IORManipsd.lib  | 
      スタティックリンクライブラリファイル | |
| ACE_wrappers\TAO\tao\Table | TAO_IORTable.lib TAO_IORTabled.lib TAO_IORTablemfc.lib TAO_IORTablemfcd.lib  | 
      インポートライブラリファイル | 
| TAO_IORTables.lib TAO_IORTablesd.lib  | 
      スタティックリンクライブラリファイル | |
| ACE_wrappers\TAO\tao\PortableServer | TAO_PortableServer.lib TAO_PortableServerd.lib TAO_PortableServermfc.lib TAO_PortableServermfcd.lib  | 
      インポートライブラリファイル | 
| TAO_PortableServers.lib TAO_PortableServersd.lib  | 
      スタティックリンクライブラリファイル | |
| ACE_wrappers\TAO\tao\Messaging | TAO_Messaging.lib TAO_Messagingd.lib TAO_Messagingmfc.lib TAO_Messagingmfcd.lib  | 
      インポートライブラリファイル | 
| TAO_Messagings.lib TAO_Messagingsd.lib  | 
      スタティックリンクライブラリファイル | |
| ACE_wrappers\TAO\tao\Strategies | TAO_Strategies.lib TAO_Strategiesd.lib  | 
      インポートライブラリファイル | 
| TAO_Strategiess.lib TAO_Strategiessd.lib  | 
      スタティックリンクライブラリファイル | |
| ACE_wrappers\TAO\TypeCodeFactory | TAO_TypeCodeFactory.lib TAO_TypeCodeFactoryd.lib TAO_TypeCodeFactorymfc.lib TAO_TypeCodeFactorymfcd.lib  | 
      インポートライブラリファイル | 
| TAO_TypeCodeFactorys.lib TAO_TypeCodeFactorysd.lib  | 
      スタティックリンクライブラリファイル | 
IDLコンパイラを生成します。アプリケーション開発時にIDLファイルからC++スタブ、スケルトンファイルを生成するためにIDLコンパイラを使用します。CORBAアプリケーション開発時には、VC++の中やコマンドラインからIDLコンパイラを呼び出すので、実行体が1つあれば十分です。しかし、TAO自体のビルドには、それぞれのIDLコンパイラが必要とされるので、すべてビルドしておきます。
なお、インストールする場合は、TAO_IDL Compiler
Win32 Static Releaseだけコピーします。
| プロジェクト名 | 設定名 | 内容 | 
|---|---|---|
| TAO_IDL Compiler | Win32 Release | IDLコンパイラを生成する。実行時に他のDLLを必要とする構成となる。 | 
| Win32 Debug | ||
| TAO_IDL Compiler Static | Win32 Static Release | IDLコンパイラを生成する。実行時には他のDLLは不要。 | 
| Win32 Static Debug | ||
| TAO_IDL_BE_DLL | Win32 Release | |
| Win32 Debug | ||
| TAO_IDL_BE_LIB | Win32 Static Release | |
| Win32 Static Debug | ||
| TAO_IDL_FE_DLL | Win32 Release | |
| Win32 Debug | ||
| TAO_IDL_FE_LIB | Win32 Static Release | |
| Win32 Static Debug | 
生成ファイル
| ディレクトリ | リファイル | 種類 | 
|---|---|---|
| ACE_wrappers\bin\Release | tao_idl_static.exe | IDLコンパイラ | 
| ACE_wrappers\TAO\TAO_IDL | TAO_IDL_BE_LIBs.lib TAO_IDL_FE_LIBs.lib  | 
      スタティックリンクライブラリファイル | 
| ワークスペースファイル | 場所 | 内容 | 
|---|---|---|
| orbsvcs.dsw(CosNaming.dsp) | ACE_wrappers\TAO\orbsvcs\orbsvcs | ネーミングサービスのクライアント(IDL) | 
| orbsvcs_static.dsw(CosNaming_Static.dsp) | ||
| Naming_Service.dsw | ACE_wrappers\TAO\orbsvcs\Naming_Service | ネーミングサービスのサーバ | 
| Naming_Server_static.dsw | 
ネーミングサービスのクライアントには、IDLファイルが含まれており、このIDLからIDLコンパイルされたファイルはサーバが必要としています。そこで、最初にクライアントからビルドします。
orbsvcs.dswをVC++で開いて、バッチビルドで以下のプロジェクトをビルドします。CosNamingプロジェクトは、Svc_Utilsプロジェクトへの依存を持っています(自動でビルドされます)。
orbsvcs.dswでCosNamingをビルドする際、Win32 mfc Release/Win32 mfc Debugの設定でリンクするファイルにTAO_IORTablemfc.lib/TAO_IORTablemfcd.libが抜けているためリンクエラーが発生します。そこで、追記します。
ACE+TAOを展開してビルドしたまま利用してもよいのですが、そのままでは大量のディスク(1GB以上)を食っているので、TAOを利用するのに必要なファイルだけを抜き出して別なディレクトリにインストールします。
以下、D:\lib\taoディレクトリ下にインストールする場合です。
D:\lib\tao
       +--- bin         実行ファイル、DLLファイルを格納 
       +--- include     ヘッダファイル等を格納
       |     +--- tao   
       +--- lib         リンク時に必要なライブラリファイルを格納
ACE_wrappers\tao直下、およびACE_wrappers\tao\PortableServer直下にあるヘッダファイル(*.h)をコピーします。なお、ヘッダファイルの中でインクルードされているファイルが幾種類かあります。例えば、*.i、*.inl、*.cppなどです。これらも一緒にコピーする必要があります。安直な方法は、拡張子*.i、*.inl、*.cppを全てインストール先にコピーします。
tmp$ cd ACE_wrappers/TAO/tao tao$ cp *.h *.i *.inl *.cpp /cygdrive/d/lib/tao/include/tao tao$ cd PortableServer PortableServer$ cp *.h *.i *.inl *.cpp \ /cygdrive/d/lib/tao/include/tao/PortableServer/ PortableServer$
これでは不要なファイル(特に*.cppファイル)もコピーされてしまいます。そこで必要なファイルだけをコピーする方法を考えます。
*.hと*iと*inlは全てコピーします。
*.cppファイルは、ヘッダファイル内で#include指令で記述されているものだけが必要なので、これを引っ掛けてコピーします。判定にはUNIXのfind、grep、awkコマンドを使用していますがあまりきれいではありません。とりあえず、*.cppが277ファイルあるうち16ファイルがコピー対象となりました。
*.hと*.iと*.inlはディレクトリ構成を維持してコピーします。ここではビルドしていないRTCORBA、RTPortableServer、SmartProxiesディレクトリ以下はコピー対象から除去しています。
tmp$ cd ACE_wrappers/TAO/tao tao$ find . -name "RT*" -prune -o -name "SmartProxies" -prune -o \( -name "*.h" -o -name "*.i" -o -name "*.inl" \) -print | cpio -pd /cygdrive/d/lib/tao/include/tao/ 9128 blocks tao$ tao$
ヘッダファイル(*.h)中からインクルードしている*.cppファイルを検索し、ディレクトリ構成を維持してコピーします。
tao$ find . -name "*.h" -print|xargs grep "^[ ]*#[ ]*include" | grep ".cpp"
  | awk 'FS="\""{split($0, chank); gsub(/tao\//, "", chank[2]); print 
  "find . -name", chank[2], "-print | cpio -pd /cygdrive/d/lib/tao/include/tao/"}'
  > cpio.list
tao$ sh cpio.list
tao$
tao$ cd .. TAO$ find . \( -name "*tests" -o -name "examples" -o -name "Test" -o -name "Example" -o -name "docs" \) -prune -o -name "*idl" -print | cpio -pd /win32app/lib/tao/idls/ 1125 blocks TAO$
Windowsの共有ライブラリファイル(DLL)は、リンク時に必要なインポートライブラリファイル(*.lib)と実行時に必要なダイナミックリンクライブラリファイル(*.dll)に分かれています。一方、スタティックリンクライブラリファイル(*.lib)は1種類だけです。そこで、リンク解決時に必要なファイルと実行時に必要なファイルをインストールするディレクトリを分けます。なぜならば、実行時に必要なファイルのあるディレクトリは環境変数PATHに含めるからです。
TAO$ find . -name "*.lib"
./tao/BiDir_GIOP/TAO_BiDirGIOP.lib
./tao/BiDir_GIOP/TAO_BiDirGIOPd.lib
./tao/BiDir_GIOP/TAO_BiDirGIOPmfc.lib
./tao/BiDir_GIOP/TAO_BiDirGIOPmfcd.lib
./tao/BiDir_GIOP/TAO_BiDirGIOPs.lib
./tao/BiDir_GIOP/TAO_BiDirGIOPsd.lib
./tao/Domain/TAO_Domain.lib
./tao/Domain/TAO_Domaind.lib
./tao/Domain/TAO_Domains.lib
./tao/Domain/TAO_Domainsd.lib
./tao/DynamicAny/TAO_DynamicAny.lib
./tao/DynamicAny/TAO_DynamicAnyd.lib
./tao/DynamicAny/TAO_DynamicAnymfc.lib
./tao/DynamicAny/TAO_DynamicAnymfcd.lib
./tao/DynamicAny/TAO_DynamicAnys.lib
./tao/DynamicAny/TAO_DynamicAnysd.lib
./tao/DynamicInterface/TAO_DynamicInterface.lib
./tao/DynamicInterface/TAO_DynamicInterfaced.lib
./tao/DynamicInterface/TAO_DynamicInterfacemfc.lib
./tao/DynamicInterface/TAO_DynamicInterfacemfcd.lib
./tao/DynamicInterface/TAO_DynamicInterfaces.lib
./tao/DynamicInterface/TAO_DynamicInterfacesd.lib
./tao/IFR_Client/TAO_IFR_Client.lib
./tao/IFR_Client/TAO_IFR_Clientd.lib
./tao/IFR_Client/TAO_IFR_Clientmfc.lib
./tao/IFR_Client/TAO_IFR_Clientmfcd.lib
./tao/IFR_Client/TAO_IFR_Clients.lib
./tao/IFR_Client/TAO_IFR_Clientsd.lib
./tao/IORManipulation/TAO_IORManip.lib
./tao/IORManipulation/TAO_IORManipd.lib
./tao/IORManipulation/TAO_IORManipmfc.lib
./tao/IORManipulation/TAO_IORManipmfcd.lib
./tao/IORManipulation/TAO_IORManips.lib
./tao/IORManipulation/TAO_IORManipsd.lib
./tao/IORTable/TAO_IORTable.lib
./tao/IORTable/TAO_IORTabled.lib
./tao/IORTable/TAO_IORTablemfc.lib
./tao/IORTable/TAO_IORTablemfcd.lib
./tao/IORTable/TAO_IORTables.lib
./tao/IORTable/TAO_IORTablesd.lib
./tao/Messaging/TAO_Messaging.lib
./tao/Messaging/TAO_Messagingd.lib
./tao/Messaging/TAO_Messagingmfc.lib
./tao/Messaging/TAO_Messagingmfcd.lib
./tao/Messaging/TAO_Messagings.lib
./tao/Messaging/TAO_Messagingsd.lib
./tao/PortableServer/TAO_PortableServer.lib
./tao/PortableServer/TAO_PortableServerd.lib
./tao/PortableServer/TAO_PortableServermfc.lib
./tao/PortableServer/TAO_PortableServermfcd.lib
./tao/PortableServer/TAO_PortableServers.lib
./tao/PortableServer/TAO_PortableServersd.lib
./tao/Strategies/TAO_Strategies.lib
./tao/Strategies/TAO_Strategiesd.lib
./tao/Strategies/TAO_Strategiess.lib
./tao/Strategies/TAO_Strategiessd.lib
./tao/TAO.lib
./tao/TAOd.lib
./tao/TAOmfc.lib
./tao/TAOmfcd.lib
./tao/TAOs.lib
./tao/TAOsd.lib
./tao/TypeCodeFactory/TAO_TypeCodeFactory.lib
./tao/TypeCodeFactory/TAO_TypeCodeFactoryd.lib
./tao/TypeCodeFactory/TAO_TypeCodeFactorymfc.lib
./tao/TypeCodeFactory/TAO_TypeCodeFactorymfcd.lib
./tao/TypeCodeFactory/TAO_TypeCodeFactorys.lib
./tao/TypeCodeFactory/TAO_TypeCodeFactorysd.lib
./TAO_IDL/TAO_IDL_BE_DLL.lib
./TAO_IDL/TAO_IDL_BE_DLLd.lib
./TAO_IDL/TAO_IDL_BE_LIBs.lib
./TAO_IDL/TAO_IDL_BE_LIBsd.lib
./TAO_IDL/TAO_IDL_FE_DLL.lib
./TAO_IDL/TAO_IDL_FE_DLLd.lib
./TAO_IDL/TAO_IDL_FE_LIBs.lib
./TAO_IDL/TAO_IDL_FE_LIBsd.lib
TAO$ find . -name "*.lib" -exec cp {} /cygdrive/d/lib/tao/lib/ \;
TAO$ 
Windowsの共有ライブラリファイル(DLL)は、ライブラリを使用するアプリケーションが起動したときに読み込まれます(黙示のリンクの場合)。その際、DLLファイルは環境変数PATHの中から検索されるので、DLLファイルは環境変数PATHで指定するディレクトリに配置します。ここでACEに含まれる実行ファイル等はインストール先(例えばD:\lib\ace)の中にbinという名前のディレクトリを設けてコピーします。
TAO$ cd ../bin
bin$ find . \( -name "*.dll" -o -name "*.exe" \) -a \
  \( -name "tao*" -o -name "TAO*" \) -print
./Release/tao_idl.exe
./Release/tao_idl_static.exe
./TAO.dll
./TAOd.dll
./TAOmfc.dll
./TAOmfcd.dll
./TAO_BiDirGIOP.dll
./TAO_BiDirGIOPd.dll
./TAO_BiDirGIOPmfc.dll
./TAO_BiDirGIOPmfcd.dll
./TAO_Domain.dll
./TAO_Domaind.dll
./TAO_DynamicAny.dll
./TAO_DynamicAnyd.dll
./TAO_DynamicAnymfc.dll
./TAO_DynamicAnymfcd.dll
./TAO_DynamicInterface.dll
./TAO_DynamicInterfaced.dll
./TAO_DynamicInterfacemfc.dll
./TAO_DynamicInterfacemfcd.dll
./tao_idl.exe
./TAO_IDL_BE_DLL.dll
./TAO_IDL_BE_DLLd.dll
./TAO_IDL_FE_DLL.dll
./TAO_IDL_FE_DLLd.dll
./tao_idl_static.exe
./TAO_IFR_Client.dll
./TAO_IFR_Clientd.dll
./TAO_IFR_Clientmfc.dll
./TAO_IFR_Clientmfcd.dll
./TAO_IORManip.dll
./TAO_IORManipd.dll
./TAO_IORManipmfc.dll
./TAO_IORManipmfcd.dll
./TAO_IORTable.dll
./TAO_IORTabled.dll
./TAO_IORTablemfc.dll
./TAO_IORTablemfcd.dll
./TAO_Messaging.dll
./TAO_Messagingd.dll
./TAO_Messagingmfc.dll
./TAO_Messagingmfcd.dll
./TAO_PortableServer.dll
./TAO_PortableServerd.dll
./TAO_PortableServermfc.dll
./TAO_PortableServermfcd.dll
./TAO_Strategies.dll
./TAO_Strategiesd.dll
./TAO_TypeCodeFactory.dll
./TAO_TypeCodeFactoryd.dll
./TAO_TypeCodeFactorymfc.dll
./TAO_TypeCodeFactorymfcd.dll
bin$ find . -name "*.dll" \( -name "tao*" -o -name "TAO*" \) \  
  -exec cp {} /cygdrive/d/lib/tao/bin/ \;
bin$ cp Release/tao_idl*.exe /cygdrive/d/lib/tao/bin/
bin$
ACEがどのバージョンかを示すファイルが1つあるので、これをコピーしておきます。
bin$ cd ../TAO TAO$ ls VERSION VERSION TAO$ cp VERSION /cygdrive/d/lib/tao/ TAO$
DLLやツールの実行ファイルを呼び出すための環境変数PATH設定、TAOアプリケーションのビルド時に使用するインクルードファイル・ライブラリファイルの置き場所の指定が必要となります。
TAOを利用するアプリケーションでは、伝統的に環境変数TAO_ROOTを使用します。また、DLLファイルを置いたディレクトリを環境変数PATHに追加する必要があります。そこで、この2つの環境変数を設定しておきます。
| 環境変数名 | 設定方法 | 設定内容 | 
|---|---|---|
| TAO_ROOT | 新規作成 | D:\lib\tao | 
| PATH | 追加 | %TAO_ROOT%\binを追加する[*1] | 
[*1] %TAO_ROOT%\binを環境変数PATHに記述しても、%TAO_ROOT%が正しく環境変数TAO_ROOTの中身に展開されないかもしれません。
TAOを使用するアプリケーションを開発する場合、インクルードファイルのパスと追加ライブラリのパスにACEのinclude、libおよびTAOのinclude、libを指定します。また、IDLコンパイラ等のツールをVisual C++内部から呼び出す場合のツール格納ディレクトリを指定します。
| 表示するディレクトリ | ディレクトリに追加する内容 | 備考 | 
|---|---|---|
| 実行可能ファイル | D:\lib\ace\bin D:\lib\tao\bin  | 
      IDLコンパイラをVC++内部から呼び出す場合は、この設定は必須です。 | 
| インクルードファイル | D:\lib\ace\include D:\lib\tao\include  | 
      個々のプロジェクト毎にパスを記述するならば不要。 | 
| ライブラリファイル | D:\lib\ace\lib D:\lib\tao\lib  | 
      個々のプロジェクト毎にパスを記述するならば不要。 |