はじめたての C++Builder XE3 (EXE 配布の際の注意点)

EXE を C++Builder が導入されていないマシンに持っていて動作させるとエラーが出る場合

C++Builder をもちいてコンパイルおよびビルドをおこなうと「Project?.exe」というファイルが出来上がります。
で、これを C++Builder が導入されていない環境に持って行って動作させると

コンピューターに rtl170.bpl がないため、プログラムを開始できません。この問題を解決するには、プログラムを再インストールしてみてください。

などというメッセージが出てプログラムが異常終了します。

ランタイムライブラリ DLL の配布の必要性

これは仕様でして、この事象に真正面から取り組むためには ランタイムライブラリの配布という行為が必要になります。
が、せっかく C 言語でアプリケーションを開発するのだから、ランタイムライブラリなんてものは配布したくないのが人情です。
ランタイムライブラリなんてものが必要なのは C#VB.NET 、そして Java なんてあたりだけにとどめたいものですから...

ランタイムライブラリ DLL を必要としない C++Builder アプリケーションのビルド方法

これを回避する手っ取り早い方法は、以下の通りです。

  • 「Project?.cbproj」ペインの中の「Project?.exe」のビルド構成を「Debug」から「Release」に変更します。(Debug 版では 別途ランタイム DLL が必要になります)
  • 「Project?.cbproj」ペインの中の「Project?.exe」を右クリックして「オプション(P)」を選び、->「パッケージ」->「実行時パッケージ」->「実行時パッケージを使ってリンク」の設定を「false」に設定
  • 「Project?.cbproj」ペインの中の「Project?.exe」を右クリックして「オプション(P)」を選び、->「C++ リンカ」->「動的 RTL とリンク」の設定を「false」に設定

ただし、設定変更前にくらべて EXE のサイズが かなり大きくなります。8 MB 以上のオーバーヘッドが必要なようです。でも「DLL 地獄」的な事象に遭遇するリスクが かなり少なくなるため 私はランタイムライブラリ DLL を必要としない EXE 形式によるプログラム配布が妥当であろうと考えています。