ページの先頭行へ戻る
Interstage Application Server V13.0.0 アプリケーション作成ガイド(CORBAサービス編)
FUJITSU Software

11.3.2 -noincludeオプションの使用方法

IDLファイルとインクルードファイルは、以下のように別々にIDLコンパイルを行います。

インクルードファイルを含む複数のIDLファイルでのIDLコンパイラの実行結果について、以下の図に示します。



注意

  • IDLコンパイラはインクルードファイルの構文解析も行い、構文上のエラーやIDLファイルの記述との衝突チェックも行います。このため、インクルードファイルに構文上の問題がある場合は、前もって修正する必要があります。

  • -noincludeオプションを-R/-aオプションと併用(インタフェースリポジトリに登録)する場合、IDLコンパイラはインクルードファイルに記述された識別子がインタフェースリポジトリに登録されているかをチェックします。このため、インクルードファイルはすでにインタフェースリポジトリに登録されている必要があります。

  • -noincludeと-update/-deleteは併用できません。このため、IDLファイルの情報を変更する場合は、“-R -delete”で定義情報をインタフェースリポジトリからいったん削除し、再度、変更した情報を-R/-aで登録します。このとき、インクルードファイルの情報も削除されるため、先にインクルードファイルの情報を-R/-aにより登録する必要があります。

  • IDLコンパイラで-noincludeオプションを指定して生成したソースファイルを、Microsoft(R) Visual Studio(R)でコンパイルを実行した場合、以下のエラーメッセージが表示されることがあります。

    xxxx : error LNK2001: 外部シンボル "_xxxxx" は未解決です

    この場合、IDLコンパイラに-noincludeオプションを指定せずにソースファイルを生成し、リンクオプションに/FORCEオプションを追加して、再度コンパイルを実行してください。このとき、Microsoft(R) Visual Studio(R)でプログラム全体の最適化なしを指定してください。


エラーの原因と対処

-noincludeオプションを指定した場合にIDLコンパイラから表示されるエラーメッセージ、およびその原因/対処を以下に示します。

1

現象

“identifier redeclaration of ...”のエラーが発生します。

原因

1.IDLファイルの定義とインクルードファイルの定義が衝突しています。
2.-a/-Rと併用した場合、すでにIDLファイルの定義が登録されています。

対処

1.衝突する定義を避けるため、識別子の名前を変更するなどの修正を行います。
2.IDLファイルの情報を変更する場合は、-noincludeと-delete/-updateは併用できません。-deleteでいったん情報を削除し、インクルードファイルのIDLコンパイルからやり直します。

2

現象

-Rなど指定時に“XXX is not installed.”のエラーが発生します。

原因

インタフェースリポジトリにインクルードファイルの定義が登録されていません。

対処

前もってインタフェースリポジトリにインクルードファイルを登録しておきます。

3

現象

その他の構文エラーが発生します。

原因

IDL構文上の問題があります。

対処

メッセージに該当するIDLの定義を修正します。