現在多数のフォームを持つ業務ソフトを開発中なのですが、
コンパイルの時間、管理が大変なためパッケージへ分割を
考えています。
またそのときには一部フォームを実行時パッケージにしたいと
思っています。
実行時パッケージへの分割は過去ログ等から探して無事に
できたのすが、いざ他のPCへ配布してみると「RTL100.BPLが
見つかりませんでした。」のエラーになります。
実行時パッケージを使って再構築の欄は「vclx;vcl;dbrtl;....」と
なっていたので、ここに指定されているパッケージはリンクされないの
だろうと考え、欄を「Package1」(オリジナルのフォームが入ったパッケージ)
だけを記入し再構築してみましたが、やはり基本的なパッケージは
リンクされていないようでした。
ここで質問なのですが、このような基本パッケージはexeにリンクし、
独自のパッケージのみを実行時パッケージにすることは可能でしょうか?
よろしくお願いいたします。
---------------------------
太田剛文
takef...@gracix.com
---------------------------
RTL100.bpl を .exe に静的リンクすることはできないと
思います。
ご存知のように、アプリケーションを .exe 1つと .bpl
いくつかに分割する時、元のソースの個々のユニットは、
必ず分割後のどれか1つのパーツに含まれることになり、
複数のパーツに重複して含まれてはいけないという制約が
あります。
つまり、.exe に unit1 がリンクされていたら、パッケー
ジに unit1 がリンクされてはいけません。
加えて、.bpl に含まれるユニットは .exe や他の .bpl
から利用可能ですが、.exe に含まれるユニットを .bpl
から利用することはできません。
この条件は Delphi 付属のライブラリに含まれるユニット
にも適用されますので System など、.bpl から uses
されるライブラリは .exe にリンクすることはできない
ことになります。
上記制約のみから考えると、原理的には基本ライブラリを
.exe ではなくどれか1つの .bpl にすべての含めてしまい、
.exe からも、他の .bpl からもその .bpl を参照するという
ことはできそうですが、、、試したことはありません。
パッケージのプロジェクトソースで requires を空にすれば
あるいは?
通常は、実行時パッケージが参照する rtlxx.bpl や vclxx.bpl
をアプリケーションと共に配布します。どの .bpl を配布する
必要があるかは、IDE デバッガでデバッグ中に、[表示]-[デバッ
グ]-[イベントログ]を参照すると良いそうです。
Delphi7 のヘルプファイルですと(^^; 「パッケージとコンポー
ネントの操作」という項目があって、このあたりのことが
(分りにくく)書いてありました。
ご参考になれば幸いです。
Takefumi-o さんは書きました:
武内様ありがとうございました。
なるほど、なんとなくわかりました。
exeに選択してリンクするということは、基本となるVCLなどが
ダブってしまう可能性があるということですね。
別途基本パッケージのインストーラを作ることにします。
基本パッケージをインストールしたくない場合はDLLで
つなげていくという形にするしかないようですね。
---------------------------
太田剛文
takef...@gracix.com
---------------------------