2.3.10 リンクの設定
リンクを設定するコンパイラオプションについて,説明します。
- 〈この項の構成〉
(1) -StdCallオプション(Windows(x86) COBOL2002で有効)
(a) 形式
-StdCall -noStdCall
(b) 機能
- -StdCall
-
stdcall呼び出し指示ファイル(.cbw)を読み込むためのオプションです。stdcall呼び出し指示ファイルは,CALL文で最外側のプログラムを呼び出すときの属性がstdcall呼び出し規約となるように指示するファイルです。したがって,cdecl呼び出し規約で呼び出す最外側のプログラム名を,stdcall呼び出し指示ファイルに指定できません。
このオプションを指定しない場合,stdcall呼び出し指示ファイルは,読み込まれません。また,呼び出し属性は,CALL-CONVENTION段落の指定に従います。
- -noStdCall
-
-StdCallオプションの指定を打ち消します。
(5) リンケージを行わない
リンケージ処理をしない場合に指定します。
リンケージ処理をしない場合は,コンパイル処理によってオブジェクトファイルが生成されますが,リンケージ処理は行われません。
擬似主プログラム生成,擬似副プログラム生成を指定する場合は,この項目を指定しないでください。
このオプションは,開発マネージャだけで指定できます。
(6) -Compileオプション
(a) 形式
-Compile,{CheckOnly|NoLink} -noCompile
(b) 機能
プログラムのコンパイル時,オブジェクトファイル(.obj),実行可能ファイル(.exe),およびDLL(.dll)の生成を抑止します。
- -Compile,CheckOnly
-
COBOLプログラムのコンパイル時にエラーチェックだけをします。オブジェクトファイル,実行可能ファイル,およびDLLは出力しません。
このオプションを指定すると,実行可能ファイルを生成しないため,コンパイル速度が向上します。単にエラーチェックだけをしたい場合に指定します。
- -Compile,NoLink
-
オブジェクトファイルは出力しますが,実行可能ファイル,DLLは生成しません。出力したオブジェクトファイルは,あとでリンカを使用して実行可能ファイル,またはDLLにできます。
- -noCompile
-
-Compileオプションの指定を打ち消します。
(c) 注意事項
-
-Compileオプションを指定した場合,-OutputFileオプションの指定は無効となります。
また,-Compile,CheckOnlyオプションを指定した場合,アプリケーションデバッグ機能に関連するオプション(-DebugInf,-DebugCompati,-DebugData,-TDInf,-CVInf,-DebugRangeまたは-Testcmdオプション)が指定されても,無効となります。
-
このオプションは,コマンドライン(ccbl2002コマンド)で指定できます。開発マネージャでは,指定できません。
(7) -DefFileオプション
(a) 形式
-DefFile ファイル名 -noDefFile
(b) 機能
(c) 注意事項
-
このオプションは,コマンドライン(ccbl2002コマンド)で指定できます。開発マネージャでは,指定できません。
(8) -IconFileオプション
(a) 形式
-IconFile ファイル名 -noIconFile
(b) 機能
(c) 注意事項
-
このオプションは,コマンドライン(ccbl2002コマンド)で指定できます。開発マネージャでは,指定できません。
(9) -ResrcFileオプション
(a) 形式
-ResrcFile ファイル名 -noResrcFile
(b) 機能
(c) 注意事項
-
このオプションは,コマンドライン(ccbl2002コマンド)で指定できます。開発マネージャでは,指定できません。
(10) -OutputFileオプション
(a) 形式
-OutputFile ファイル名 -noOutputFile
(b) 機能
- -OutputFile ファイル名
-
生成する実行可能ファイル,またはDLLファイルの名称を指定します。
ファイル名には,生成する実行可能ファイル,またはDLLファイルの名称を指定します。カレントフォルダに出力する場合は,ファイル名だけを指定します。また,任意のフォルダに出力する場合は,ドライブ名からの絶対パス名で指定します。
このオプションの指定がない場合,次の規則に従って実行可能ファイル,またはDLLファイル名が決定します。
- (実行可能ファイルを生成する場合)
-
-Mainオプションに指定したファイル名に拡張子(.exe)を付けたファイル名になります。-Mainオプションの指定がない場合,ccbl2002コマンド中で-Mainが仮定されたソースファイル名(ccbl2002コマンド中で最初にコンパイルされたソースファイル名)に拡張子.exeを付けた名称となります。このとき,出力先のフォルダも上記のソースファイルと同じになります。
- (DLLファイルを生成する場合)
-
ccbl2002コマンド中で最初にコンパイルされたソースファイル名称に拡張子.dllを付けた名称となります。このとき,出力先のフォルダも上記のソースファイルと同じになります。
なお,-SimMainオプション,-SimSubオプション,または-SimIdentオプションを指定した場合については,-SimMainオプション,-SimSubオプション,-SimIdentオプションの説明をそれぞれ参照してください。
-OutputFileオプションと-Compileオプションを同時に指定した場合,-OutputFileオプションは,無効となります。
- -noOutputFile
-
-OutputFileオプションの指定を打ち消します。
(c) 注意事項
-
ccbl2002コマンドは,-OutputFileに指定したファイル名の拡張子が.exeまたは.dllであるかどうかのチェックをしません。.exeまたは.dll以外の拡張子を指定した場合,動作は保証しません。
-
このオプションは,コマンドライン(ccbl2002コマンド)で指定できます。開発マネージャでは,指定できません。
(11) -Linkオプション
(a) 形式
-Link オプションの並び -noLink
(c) 注意事項
-
-Linkオプション以降の文字は,ほかのオプション名やファイル名なども含めすべてリンカに渡されます。したがって,このオプションはオプション群の最後に指定してください。
-
コマンドファイル中に-Linkオプションの指定がある場合は,その行の-Linkオプション以降がリンカに渡され,次の行から別のオプションとして扱われます。
-
-Linkオプションは,-Detailsオプションでのコンパイラオプションの詳細情報表示の対象にはなりません。
-
このオプションを開発マネージャで指定する場合,プロジェクト設定ダイアログボックスの[ユーザ設定]タブを使用してください。[ユーザ設定]タブの詳細は,「2.2.3 オプションの設定方法」を参照してください。
-
オプションの並びに-OUTリンカオプションを指定して,生成する実行可能ファイル,またはDLLファイルの名称を指定しないでください。生成されたファイルの動作は保証しません。
(12) -DynamicLinkオプション
(a) 形式
-DynamicLink,Call -noDynamicLink
(b) 機能
- -DynamicLink,Call
-
定数指定のCALL文によってプログラムを呼び出す場合,呼び出されるプログラムが静的にリンクされていないときに,動的なリンク(ダイナミックリンク)が設定されます。
動的なリンク(ダイナミックリンク)については,マニュアル「COBOL2002 ユーザーズガイド」の「プログラムの呼び出し」を参照してください。
なお,COBOL2002では,ccblコマンドでコンパイルする場合に,-Bdオプションを指定できます。
- -noDynamicLink
-
-DynamicLinkオプションの指定を打ち消します。
(13) -ManifestFileExtオプション
(a) 形式
-ManifestFileExt -noManifestFileExt
(b) 機能
- -ManifestFileExt
-
マニフェストファイルを実行可能ファイル,またはDLLに埋め込まずに,外部マニフェストファイルとします。
COBOL2002コンパイラは,LINKコマンド実行時に生成されたマニフェスト情報※を,MTコマンドを使用して実行可能ファイルやDLLに埋め込みますが,このオプションを使用するとマニフェスト情報を外部マニフェストファイルとして出力できます。
外部マニフェストファイルの出力先フォルダは,生成する実行可能ファイル,またはDLLファイルと同じになります。
マニフェスト情報の追加,または変更をしたい場合,生成した外部マニフェストファイルを直接テキストエディタで編集するか,または追加情報のマニフェストファイルを作成してMTコマンドの機能によってマニフェスト情報をマージします。
なお,MTコマンドがマニフェスト情報の埋め込みに失敗して,COBOL2002コンパイラがエラーとなることがありますが,このオプションを使用すると,MTコマンドの実行を抑止してエラーを回避できます。
- 注※
-
COBOL2002が同梱するLINKコマンドは,使用するC実行時ライブラリの情報やUAC情報をマニフェスト情報として生成します。
なお,マニフェスト情報の種類や詳細については,Microsoftのリファレンスを参照してください。
- -noManifestFileExt
-
-ManifestFileExtオプションの指定を打ち消します。
(c) 注意事項
-
このオプションと-Compileオプションを同時に指定した場合,このオプションは無効となります。
-
このオプションは,開発マネージャ上で出力した情報リストのコンパイルリストの情報リストのオプションには表示しません。
-
このオプションを指定した場合,外部マニフェストファイル名は「実行可能ファイル名.manifest」,および「DLLファイル名.manifest」となります。そのため,ファイルの出力先フォルダに同名のファイルがあると上書きされます。
-
実行可能ファイルに対応する外部マニフェストファイルは,必ず実行可能ファイルと同じフォルダに配置してください。実行可能ファイルと同じフォルダに配置されない場合,使用するC実行時ライブラリのバージョンによっては実行可能ファイルが正しく動作しません。
-
DLLファイルを作成するとき,このオプションを指定して生成されるマニフェストファイルはDLLファイルに埋め込んで使用しなければなりません。マニフェストの埋め込みについては,マニュアル「COBOL2002 ユーザーズガイド」の「コンパイルとリンクを別々に実行する方法」を参照してください。
また,使用するC実行時ライブラリのバージョンによってはマニフェストファイルは生成されないことがあります。
生成されない場合は,マニフェストファイルがなくても動作に問題ありません。