ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(コンポーネントトランザクションサービス編)

2.4.3 スケルトンとサーバアプリケーションのソースとのコンパイル・リンク

  サーバアプリケーションのソースとスケルトンのコンパイル方法、およびリンク方法について説明します。
  C言語でアプリケーションを作成した場合について、コンパイルとリンクの手順の流れを以下に示します。

  サーバアプリケーションは、APMと動的に結合します。このため、サーバアプリケーションは共用ライブラリとし、動的結合ができる状態にしておく必要があります。この共用ライブラリには、サーバアプリケーションが使用するライブラリを結合してください。データベース管理システムのライブラリ以外で、サーバアプリケーションのリンク時に指定するライブラリを以下に示します。

[リンク時に指定するライブラリ]

ライブラリ名

格納場所

用途

f3fmalcapi.lib

INTERSTAGEインストールフォルダ\td\lib

コンポーネントトランザクションサービスランタイム(必須)

libextpapiskl.lib

INTERSTAGEインストールフォルダ\extp\lib

コンポーネントトランザクションサービスランタイム(必須)

odwin.lib

INTERSTAGEインストールフォルダ\odwin\lib

CORBAサービスランタイム(注)

odcn.lib

INTERSTAGEインストールフォルダ\odwin\lib

CORBAサービスランタイム(注)

odif.lib

INTERSTAGEインストールフォルダ\odwin\lib

CORBAサービスランタイム(注)

(注)
  中継用サーバアプリケーションを作成するとき、および、例外を使用するときに必要です。

  サーバアプリケーションとスケルトンをVisual C++でコンパイル後、リンクする場合のコンパイルオプションの例を以下に示します。

[コンパイルオプションの例]

  Visual C++でコンパイルする場合は、[プロジェクト]-[設定]-[C/C++]の「カスタマイズ」で、以下の表に示すオプションを設定してください。

カテゴリー

項目

設定値

コード生成

Processer

80386を推奨

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

4バイト

使用するランタイム

マルチスレッド(DLL)

最適化

  

デフォルトを推奨

プリプロセッサ

プリプロセッサの定義

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

  また、[ツール]-[オプション]-[ディレクトリ]の「インクルードファイル」、「ライブラリファイル」にそれぞれINTERSTAGEインストールフォルダの下の"include"、 "lib"フォルダを登録してください。

登録例)

   (INTERSTAGEをC:\INTERSTAGEにインストールした場合)

-  インクルードファイル
  C:\INTERSTAGE\odwin\include
  C:\INTERSTAGE\td\include
  C:\INTERSTAGE\extp\include

-  ライブラリファイル
  C:\INTERSTAGE\odwin\lib
  C:\INTERSTAGE\td\lib
  C:\INTERSTAGE\extp\lib

リンク時の注意事項

  サーバアプリケーションのリンク時には、上記のライブラリのほかに、データベースや連携する他製品のライブラリなど、サーバアプリケーションで必要なライブラリがすべてリンクされていることを確認してください。また、リンクしたライブラリの格納先をワークユニット定義のアプリケーション使用パス(Path for Applicationセクション)に設定してください。
  リンクが完全でない場合やワークユニット定義のアプリケーション使用パスが完全でない場合は、ワークユニット起動処理において実行ファイルのオープン処理に失敗し、メッセージ(EXTP4640,EXTP4643,EXTP4645,EXTP4508)が出力されます。

  以下に必要なワークユニット定義の設定例を示します。

ワークユニット定義の設定例

  サーバアプリケーションの実行ファイルが“application1.dll”、格納先がc:\application\bin、サーバアプリケーションにリンクされているライブラリの格納先が、それぞれ、“d:\product1\bin”、“e:\product2\bin”の場合の定義例を以下に示します。

  [WORK UNIT]
  Name: SAMPLEWU
  Kind: ORB
  [APM]
  Name: TDNORM

  [Control Option]
  …
  Path: c:\application\bin
  Path for Application: d:\product1\bin
  Path for Application: e:\product2\bin
  …

  [Application Program]
  …
  Executable File: application1.dll

  サーバアプリケーションにリンクされているライブラリの格納先が複数存在する場合は、アプリケーション使用パス(Path for Applicationセクション)を複数設定してください。
  また、出口プログラムにリンクされているライブラリの格納先についても、同様にアプリケーション使用パス(Path for Applicationセクション)に設定してください。

  スレッドライブラリ(libthread.so)は、スレッドモードで作成する場合のみ必要です。

  スレッドライブラリ(libpthread.so)は、スレッドモードで作成する場合のみ必要です。

  サーバアプリケーションは、APMと動的に結合します。このため、サーバアプリケーションは共用ライブラリとし、動的結合ができる状態にしておく必要があります。この共用ライブラリには、サーバアプリケーションが使用するライブラリを結合してください。データベース管理システムのライブラリ以外で、サーバアプリケーションのリンク時に指定するライブラリを以降に示します。

APMの再作成

  コード変換用関数などのように、ユーザアプリケーションから呼び出されているシンボルが、ユーザがアプリケーションにリンクしたライブラリとlibc.soなどのシステムライブラリとの両方に格納されているとき、ユーザアプリケーションを実行すると、無条件にlibc.soなどのシステムライブラリに格納されたシンボルが呼び出されます。これは、APM実行モジュールの先頭にlibc.soなどのシステムライブラリが結合されているためです。この場合、ユーザアプリケーションに結合されたライブラリのシンボルを呼び出すためには、APM実行モジュールの先頭にユーザアプリケーションが使用するライブラリを結合する必要があります。
  APM実行モジュールの先頭にユーザアプリケーションが使用するライブラリを結合するためには、tdlinknormapmコマンドを使用し、APMを再作成してください。tdlinknormapmコマンドの使用方法については“リファレンスマニュアル(コマンド編)”を参照してください。