Interstage Application Server アプリケーション作成ガイド (CORBAサービス編)
目次 索引 前ページ次ページ

第2章 CORBAアプリケーション開発時の留意事項> 2.2 コンパイル・リンク

2.2.3 Windows(R)アプリケーションに関する注意事項

(1) コンパイル時のオプションについて

 Visual C++でコンパイルを実行する場合は、以下のような手順で表に示すオプションを設定してください。

 Visual C++ .NETの場合:
 [プロジェクト]-[プロパティ]-[C/C++]
 Visual C++ 5.0または6.0の場合:
 [プロジェクト]-[設定]-[C/C++]
 Visual C++ 4.0、4.1または4.2の場合:
 [ビルド]-[設定]-[C/C++]

カテゴリ

項目

設定値

コード生成

CPU
構造体メンバのアライメント

80386を推奨
4 バイト

使用するランタイム

マルチスレッド(DLL)

最適化

 

デフォルトを推奨

プリプロセッサ

プリプロセッサの定義

"OM_PC","OM_WIN32_BUILD",
"__STDC__" を追加

 ライブラリのリンク設定は、以下から行ってください。

 Visual C++ .NETの場合:
 [プロジェクト]-[プロパティ]-[リンカ]-[入力]
 Visual C++ 5.0または6.0の場合:
 [プロジェクト]-[設定]-[リンク]-[インプット]
 Visual C++ 4.0、4.1または4.2の場合:
 [ビルド]-[設定]-[リンク]-[インプット]

 リンクするライブラリについては、“提供プログラム”の“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++および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++およびInterstageを、それぞれC:\MSDEVおよびC:\Interstageにインストールした場合)

(2) コンパイル時に発生するエラーについて

 ODSV.LIBまたはODWIN.LIBを使用して、Visual C++でコンパイルを実行すると、以下のようなエラーメッセージが表示される場合があります。

 リンク中...
 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++で以下のような設定を行い、再度コンパイルを実行してください。

 Visual C++ .NETの場合:
 [プロジェクト]-[プロパティ]-[リンカ]-[コマンドライン]-[追加のオプション]に/FORCEオプションを追加します。
 Visual C++ 5.0または6.0の場合:
 [プロジェクト]-[設定]-[リンク]-[カスタマイズ]-“ターゲットを強制的に出力”をONに設定します。
 Visual C++ 4.0、4.1または4.2の場合:
 [ビルド]-[設定]-[リンク]-[カスタマイズ]-“ターゲットを強制的に出力”をONに設定します。

 また、C++マッピングの場合、以下のようなエラーメッセージが表示される場合がありますが、このメッセージは問題ありません。

 リンク中...
 LINK : warning LNK4103: 削除するデストラクタ "public: virtual void * __thiscall CORBA::Object::`vector deleting destructor'(unsigned int)" のインポートです; イメージは正しく動作しない可能性があります

(3) アプリケーションのDLL化について

 Visual C++で、IDLコンパイラから生成されたファイルを使用してDLLを作成する方法について説明します。

(a) IDLコンパイル

 DLL作成用のソースを生成する場合は、IDLコンパイル時に-dyオプションを指定してIDLコンパイルを行ってください。

(b) プリプロセッサの定義

 DLL作成時およびDLLリンク時に、Visual C++で以下のような手順で表に示すプリプロセッサの定義を設定してください。

 Visual C++ .NETの場合:
 [プロジェクト]-[プロパティ]-[C/C++]-[プリプロセッサ]-[プロセッサの定義]
 Visual C++ 5.0または6.0の場合:
 [プロジェクト]-[設定]-[C/C++]-[プリプロセッサ]-[プリプロセッサの定義]
 Visual C++ 4.0、4.1または4.2の場合:
 [ビルド]-[設定]-[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
 
  // 以下ソースコード
  ...

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005