Interstage Application Server アプリケーション作成ガイド (CORBAサービス編) |
目次
索引
![]() ![]() |
第2章 CORBAアプリケーション開発時の留意事項 | > 2.2 コンパイル・リンク |
Visual C++(R)でコンパイルを実行する場合は、以下のような手順で表に示すオプションを設定してください。
Microsoft(R) Visual C++(R) .NETまたはMicrosoft(R) Visual Studio(R) 2005の場合:
[プロジェクト]-[プロパティ]-[構成プロパティ]-[C/C++]
カテゴリ |
項目 |
設定値 |
---|---|---|
コード生成 |
構造体メンバのアライメント |
4 バイト |
使用するランタイム |
マルチスレッド(DLL) |
|
最適化 |
|
デフォルトを推奨 |
プリプロセッサ |
プリプロセッサの定義 |
"OM_PC","OM_WIN32_BUILD", |
言語 |
wchar_t をビルトイン型として扱う |
いいえ |
ライブラリのリンク設定は、以下から行ってください。
Microsoft(R) Visual C++(R) .NETまたはMicrosoft(R) Visual Studio(R) 2005の場合:
[プロジェクト]-[プロパティ]- [構成プロパティ]-[リンカ]-[入力]
リンクするライブラリについては、“提供プログラム”の“CORBAサービスの提供プログラム”−“ライブラリ”を参照してください。
また、[ツール]-[オプション]-[ディレクトリ]の「インクルード」、「ライブラリ」にそれぞれインストールフォルダの下の"INCLUDE"、"LIB"フォルダを登録してください。
登録例)
−インクルードファイル
C:\MSDEV\INCLUDE;C:\MSDEV\MFC\INCLUDE;C:\Interstage\ODWIN\INCLUDE;
C:\Interstage\TD\INCLUDE;C:\Interstage\ots\INCLUDE;
C:\Interstage\ESWIN\INCLUDE
(Visual C++(R)およびInterstageを、それぞれC:\MSDEVおよびC:\Interstageにインストールした場合)
−ライブラリファイル
C:\MSDEV\LIB;C:\MSDEV\MFC\LIB;C:\Interstage\ots\LIB;
C:\Interstage\ODWIN\LIB;C:\Interstage\EXTP\LIB;C:\Interstage\TD\LIB;
C:\Interstage\ESWIN\LIB
(Visual C++(R)およびInterstageを、それぞれC:\MSDEVおよびC:\Interstageにインストールした場合)
ODSV.LIBまたはODWIN.LIBを使用して、Visual C++(R)でコンパイルを実行すると、以下のようなエラーメッセージが表示される場合があります。
リンク中...
odsv.lib(ODSV.dll) : error LNK2005: _CORBA_sequence_string_allocはすでにsimple_skel.objで定義されています。
odsv.lib(ODSV.dll) : warning LNK4006: _CORBA_sequence_string_allocはsimple_skel.objで定義されています。2つ目以降の定義は無視されます。
このような場合には、Visual C++(R)で以下のような設定を行い、再度コンパイルを実行してください。
Microsoft(R) Visual C++(R) .NETまたはMicrosoft(R) Visual Studio(R) 2005の場合:
[プロジェクト]-[プロパティ]- [構成プロパティ]-[リンカ]-[コマンドライン]-[追加のオプション]に/FORCEオプションを追加します。
また、C++マッピングの場合、以下のようなエラーメッセージが表示される場合がありますが、このメッセージは問題ありません。
リンク中...
LINK : warning LNK4103: 削除するデストラクタ "public: virtual void * __thiscall CORBA::Object::`vector deleting destructor'(unsigned int)" のインポートです; イメージは正しく動作しない可能性があります
Visual C++(R)で、IDLコンパイラから生成されたファイルを使用してDLLを作成する方法について説明します。
(a) IDLコンパイル
DLL作成用のソースを生成する場合は、IDLコンパイル時に-dyオプションを指定してIDLコンパイルを行ってください。
(b) プリプロセッサの定義
DLL作成時およびDLLリンク時に、Visual C++(R)で以下のような手順で表に示すプリプロセッサの定義を設定してください。
Microsoft(R) Visual C++(R) .NETまたはMicrosoft(R) Visual Studio(R) 2005の場合:
[プロジェクト]-[プロパティ]- [構成プロパティ]-[C/C++]-[プリプロセッサ]-[プロセッサの定義]
言語 |
DLL作成/リンク |
プリプロセッサ定義 |
---|---|---|
C |
DLL作成時 |
"OM_USRDLL_MAKE" |
C |
DLLリンク時 |
"OM_USRDLL_LINK" |
C++ |
スケルトンDLL作成時 (注1) |
"OM_SKDLL_MAKE" |
C++ |
スケルトンDLLリンク時 |
"OM_SKDLL_LINK" |
C++ |
スタブDLL作成時 (注2) |
"OM_STDLL_MAKE" |
C++ |
スタブDLLリンク時 |
"OM_STDLL_LINK" |
注1) スケルトンファイルおよびメソッド実装部からDLLを作成する場合
注2) スタブファイルからDLLを作成する場合
(c) 注意事項
上記のようにプロジェクトの設定でプリプロセッサを定義する方法の他に、IDLコンパイラ生成ヘッダファイル(*.h)をインクルードするソースファイルで、#define文を使用して指定することもできます。
複数のIDLファイルから生成されたヘッダファイルを使用してDLLのリンクと作成を両方行う場合の例を以下に示します。
#define OM_USRDLL_LINK #include "a.h" // IDLコンパイラ生成ヘッダ #undef OM_USRDLL_LINK #define OM_USRDLL_MAKE #include "b.h" // IDLコンパイラ生成ヘッダ #undef OM_USRDLL_MAKE // 以下ソースコード ...
一つのアプリケーションには、サーバ用ライブラリかクライアント用ライブラリのいずれかのライブラリのみリンクしてください。
目次
索引
![]() ![]() |