動的モジュールの作成
動的モジュールは、システムに依存しています。このセクションでは、動的モジュールを正しくコンパイルしてインストールする方法、すなわち正しく読み込む共有ライブラリーの作成方法について、システム別に説明します。
UNIX システム
UNIX を使用している場合、以下の一般構文を使用します。
<CCC> -c -O -I$ILVHOME/include moduleSrc.cpp
<MAKESHLIB> -o module.<SHEXT> moduleSrc.o [other object files...]
下記の表は、Rogue Wave® Views のそれぞれのポートで利用できるさまざまなオプションです。モジュール・ファイル名の拡張子は必ず指定してください。
UNIX システムの動的モジュールのコンパイル・オプション
ポート名 | CCC | MAKESHLIB | SHEXT |
alpha_5.1_6.5 | cxx -x cxx | /usr/lib/cmplrs/cc/ld -shared | so |
hp32_11_3.73 | aCC +DAportable -mt - AA -z +Z | aCC -b -n -mt -AA -Wl,+s | sl |
hp64_11_3.73 | aCC +DAportable -mt - AA -z +DA2.0W | aCC -b -n -mt -AA +DA2.0W | sl |
x86_sles10.0_4.1 x86_RHEL4.0_3.4 x86-64_RHEL4.0_3.4 | g++ -fPIC | g++ -shared | so |
rs6000_5.1_6.0 power32_aix5.2_7.0 | xlC -qrtti=all | xlC -qmkshrobj=1024 | so |
ultrasparc32_8_6.2 ultrasparc32_10_11 | CC -KPIC | CC -G -h | so |
ultrasparc64_8_6.2 ultrasparc64_10_11 | CC -KPIC -mt -xtarget=ultra -xarch=v9 | CC -xtarget=ultra -xarch=v9 -G -h | so |
使用システムにより、以下のようになります。
Linux または Solaris ユーザー LD_LIBRARY_PATH 変数に読み込むモジュールへのパスが含まれていることを確認してください。Linux の場合、実行可能ファイルは
libdl.so ライブラリーに必ずリンクさせてください。
Windows システム
Microsoft Windows の場合、実際の動的モジュールは DLL です。
この機能は、dll_mda 形式でのみ利用可能です。これは Rogue Wave Views が登録されたクラスのみをグローバル変数に格納するためで、「クライアント」 (すなわちモジュールを読み込むアプリケーション) へ静的にリンクすると、各モジュールはクラスを再びローカルに作成します。
オブジェクト・ファイルのコンパイル時にモジュールを作成するには、/DILVDLL フラグを追加するだけです。コードを最適化するための、モジュール・ファイルのコンパイラー・フラグ一式は以下のようになります。
Windows システムの動的モジュールのコンパイル・オプション
ポート名 | コンパイラー・フラッグ |
x86_.net2003_7.1 | CL /Gs /Ot /Ox /O2 /c /DWIN32 /MD /W3 /G3 /DILVDLL /I<ILVHOME>/include moduleSrc.cpp |
x86_.net2005_8.0 and x86_.net2008_9.0 | CL /Gs /O1 /c /DWIN32 /MD /W3 /DILVDLL /I<ILVHOME>/include moduleSrc.cpp |
x64_.net2008_9.0 | CL /Gs /O1 /c /DWIN64 /MD /W3 /DILVDLL /I<ILVHOME>/include moduleSrc.cpp |
次のリンクを使用してモジュールにリンクします。
LINK /SUBSYSTEM:WINDOWS /DLL <ILVHOME>/lib/[PLATFORM]/dll_mda/<lib>.lib\
<systemLibs> -OUT:<moduleName>.dll moduleSrc.obj [objectfiles...]
ここで、[PLATFORM] は、x86_.net2003_7.1x86_.net2005_8.0、x86_.net2008_9.0、x64_.net2008_9.0 のいずれかの値をとります。
x64_.net2008_9.0 については、次のリンカー・オプションも追加する必要があります。
/MACHINE:X64
上記の説明にあるように、モジュールを有効にするアプリケーションは Rogue Wave Views の DLL にも必ずリンクさせてください。DLL の使用時は必ず、システム・パスがモジュールを格納するディレクトリーのパスへのアクセスを含むことを確認してください。
バージョン化に関する注意
Rogue Wave Views の動的モジュールは、バージョン化のメカニズムを備えていません。インストールされている動的モジュールがそれを読み込むアプリケーションとバイナリー互換であることを必ず確認してください。これは、Rogue Wave Views バージョン X.Y で作成したモジュールは、すべての X.Y.Z. バージョンで動作しますが、Rogue Wave Views X.W で開発したアプリケーションにより読み込まれた場合は再度コンパイルする必要があるということです。
Version 6.0
Copyright © 2015, Rogue Wave Software, Inc. All Rights Reserved.