2016.12.12技術

今さら聞けない!ランタイムライブラリとは?

  • このエントリーをはてなブックマークに追加
8817edcf cac6 4cb4 98be 88f8efdf0c18
ランタイムライブラリとは、言語の標準規格で定められた、形・マクロ・関数の集合であるライブラリなどをプログラムの実行時(ランタイム)にメインプログラムと同時に存在させ利用される前提のライブラリのことを指します。今回は、このランタイムライブラリの詳しい解説と、ライブラリ以外の2つのランタイムについてご紹介していきます。
 
10,000件以上の案件から希望の案件をご紹介!

未公開案件も多数ありますので「まずは相談したい。」という方もお気軽に登録ください。

あなたに合ったフリーランス案件を探す
Banner free wide 037b570405fddeb419957475d18a005501589cadc55bfe73d5000335887322fd
【目次】
ランタイムライブラリとは
ランタイム+ライブラリ=ランタイムライブラリ
ライブラリ以外のランタイム
ランタイムライブラリの関連項目
ランタイムライブラリの動作
ランタイム関連の不具合
3つのライブラリコンパイラオプション
まとめ
 
 

ランタイムライブラリとは

ランタイム+ライブラリ=ランタイムライブラリ

冒頭でもお話しましたが、ランタイムライブラリとはプログラムの実行時(ランタイム)にメインプログラムと同時に存在させ利用される前提のライブラリのことを指します。つまりは、ランタイム+ライブラリ=ランタイムライブラリで2つの単語から成り立っています。
 
ランタイムとは実行時のことで、走る(ラン)時間のことで、システムを動かしている間の時間を指します。そして、ライブラリとは形やマクロ、関数の集合などのプログラムを動かすために便利な部品をまとめたファイルのことを指します。つまりは、プログラムの実行時(ランタイム)にメインプログラムと同時に存在させ動かすライブラリのことをランタイムライブラリと言います。
 

DLLとは

ランタイムライブラリに関して調べると、一緒に「DLL」と書かれていることが多いです。DLLとは、ダイナミックリンクライブラリです。簡単に言うと、Windowsプログラムファイルの1つで、汎用性の高い動的リンクライブラリのことをDLLと言います。DLLは単体で実行できず、EXEファイルなどの実行可能ファイルが起動する際に連結されてメモリ上に展開されます。
 

ライブラリ以外のランタイム

ランタイムライブラリ以外にも実はランタイムとつくものが存在します。それぞれ簡単にご紹介していきます。
 

ランタイムモジュール

モジュールとは、機能単位で交換可能な構成部分という意味を持ち、システムの一部を構成するひとまとまりの機能を持った部品のことで、簡単に言えば、プログラムを動かすときに必要な部品と覚えてもらえれば大丈夫です。プログラムの実行時(ランタイム)に動かすときのモジュールのことをランタイムモジュールと言います。
 

ランタイムパッケージ

パッケージとは、そもそも目的のものを何かで包んでいる場合の包装のことを指します。ITでは、ソフトウェアやツールなどの何かしらのプログラムを動かすときに必要なものを指します。こちらも、ランタイムライブラリやランタイムモジュールと同様に、実行時に必要なパッケージのことを言います。
 
ランタイムライブラリやランタイムモジュール、ランタイムパッケージと似たようなものが並びますが、これらはプログラム実行時に必要なものになります。 
 

ランタイムライブラリの関連項目


ランタイムライブラリの基本的なファイルの拡張子は「DLL」、「OCX」等の実行時に必要なファイルになります。インターネット上にラインタイムライブラリのファイルを無料配布していたりもするので、ダウンロードして気軽に仕様することも可能です。ランタイムライブラリのダウンロードに関しては「ランタイムライブラリ一覧表」のサイトをご参考ください。
 

ランタイムライブラリの動作

ランタイムライブラリの記述で一番多いものは、VBとC/C++などのVisualStudioで動くものが多いです。今回は、その中でもC/C++のランタイムライブラリに絞り、ランタイムライブラリの動作についてご紹介します。
 
C/C++のランタイムライブラリコードは『_DllMainCRTStartup』というDLLのエントリポイント関数が含まれたものを使用します。このコードは、ランタイムライブラリを初期化した後に『DllMain』という関数を呼び出します。DLL を初期化する必要がない場合はDLLのビルド時に必要になる処理はありません。
 
詳しくは、マイクロソフト公式サイトをご参照ください。
 

ランタイム関連の不具合

ランタイムをダウンロード後、使用時にエラーが表示される場合

ソフト自体の不具合、既存のソフトとの相性が悪い、OSが対応していない、インストールが実は出来ていないなどの原因があります。その場合、一度アンインストール後に再インストールしてみてください。また、OSやソフトに対応したランタイムであるかを事前確認することによってエラーを防ぐことが出来ます。
 

カスタムコントロール不足の不具合

カスタムコントロールとは、ユーザーやサードパーティが作成したWindowsソフトウェアで制作できるボタンやパネルなどのことです。基本的に配布されているランタイムはコントロールのみで動作しますが、中にはカスタムコントロールを必要とするものもあります。ランタイムに必要なカスタムコントロールは、ベクターでダウンロードできますのでお試しください。
 

そもそもランタイムのバージョンが違う

同じランタイムでも、いくつかのバージョンが存在するものもあります。古いものは互換性がない場合が多いため、基本的には一番新しいバージョンのランタイムをダウンロードするようにしてください。
 

3つのライブラリコンパイラオプション 

ランタイムライブラリを使用する際、3つのライブラリコンパイラオプションが存在します。「/MD」、「/MT」、「/LD」の3つあり、それぞれの構文は、『/ MD[d]』、『/MT[d]』、『/LD[d]』と表示します。リンカーの特定の呼び出しに渡される全てのモジュールはこの3つのコンパイラオプションが指定されている必要がありますのでご注意下さい。
 

/MD

/MD
マルチスレッド対応およびDLL対応バージョンを使用。_MT及び_DLL を定義して、コンパイラにライブラリ名 MSVCRT.lib.objファイルに挿入させます。
 
/MDd
_DEBUG、_MT、及び_DLL を定義します。
 

/MT

/MT
マルチスレッド バージョンの静的なランタイムライブラリを使用。 _MTを定義します。コンパイラにライブラリ名LIBCMT.lib.objファイルに挿入させるために、リンカーはLIBCMT.libを使用して外部シンボルを解決することが出来ます。
 
/MTd
_DEBUG及び_MT を定義します。
 

/LD

/LD
DLLを作成するのに必要です。/DLLオプションをリンカーに渡し、DllMain関数の有無を確認します。その後にDLL の起動コードをリンクします。/MDを明示的に指定している以外は、/MTが暗黙に指定されます。
 
/LDd
デバッグ DLL を作成し、_MT及び_DEBUGを定義します。
 

まとめ

少しややこしいランタイムライブラリですが、DLL」、「OCX」等の実行時に必要なライブラリのことをランタイムライブラリと言います。VBやC/C++を使用するエンジニアにとってはすでに知っていることになりますが、今から学びたい、入門仕立てという人には類似の言葉が多くてややこしい部分ではあります。複数のプログラムで共通する機能などがまとまっているとても重要なものになりますが、インターネット上で無料配布されているものも多くありますので、まずは触ってみるから初めて見ても良いかもしれません。
  • このエントリーをはてなブックマークに追加
10,000件以上の案件から希望の案件をご紹介!

未公開案件も多数ありますので「まずは相談したい。」という方もお気軽に登録ください。

あなたに合ったフリーランス案件を探す
Banner free wide 037b570405fddeb419957475d18a005501589cadc55bfe73d5000335887322fd

新着のコラム記事

人気のコラム記事

  • キーワードからコラムを探す