静的リンクと動的リンクの違いについて教えてください。
ググって、wikiにて確認したところ、
動的リンクは、実行時にプログラムの結合を行う。
静的リンクは、コンパイル直後の実行ファイル生成時に、ライブラリ等を全てリンクし、必要なコードが全て揃った実行ファイルを生成する。
というのはわかりました。
それを踏まえて、
(1)-(1)libファイルで静的リンクさせるケース
メソッドやプロパティのインデックスというかインタフェース仕様のみ書かれている。
そして、そのインデックスを元にコンパイルチェックを行っている。
(1)-(2)objファイルで静的リンクさせるケース
objには、.cppと、.h に書かれている処理のうち、そのソース本体(そのクラス自身のモノとして持っている処理)のプロパティやメソッドのことが機械語で書かれている。
プロパティやメソッドが書かれているため、当然インタフェース仕様もわかる。
であろうと捉えていますが、この認識で大雑把には合っていますでしょうか?
また、DLLを使う場合、動的リンクとは呼ばれているものの、
「DLLでは、objに加え、必要なリンクの情報まで持っている」と思われるので、
結局、リンカによるリンク実行時に、インタフェースで不整合が起きていないかはチェックされているという認識なのですが、合っていますでしょうか?
(だとすると、なぜ、ある意味、DLLを使っていても静的リンクなのかなと感じ、動的リンクと呼ぶことに不自然さを感じます)
宜しくお願いいたします。
.
No.3ベストアンサー
- 回答日時:
(1)-(1)libファイルで静的リンクさせるケース
(1)-(2)objファイルで静的リンクさせるケース
この2つは大体同じ意味です
[exe ファイル ]
obj を集めて作成します。
main関数が含まれているため、実行すると動作します。
exe ファイルを作成する際、実行されない関数等は含めません
[lib ファイル ]
obj を集めて作成します。
main関数が無い為、実行する事はできません。
当然全ての関数が lib ファイルに含まれます
上記を踏まえて再度
[exe ファイル ]
cpp からコンパイルして作成された obj ファイルや
lib ファイル内のオブジェクトから main からの一連の流れで
使用する関数を集めて exe ファイルを作成します
libファイルにある実行されない関数等は含めません
lib ファイルの中身のオブジェクトが exe の中に存在するので
静的リンクした事になります。
[dll ファイル ]
obj を集めて作成します。
main関数が無い為、実行する事はできません。
当然全ての関数が dll ファイルに含まれます
内容は lib と同じですが動的リンクであるという点が違います。
[dll の lib ファイル ]
dll から 作成する事が出来ます。
その libファイル内には、dll内の同名の関数の情報があり
中身は dllへアクセスする処理があるだけです
上記を踏まえて再度
[exe ファイル ]
cpp からコンパイルして作成された obj ファイルや
lib ファイル内のオブジェクトから main からの一連の流れで
使用する関数を集めて exe ファイルを作成します
exe の中には dll は含まれておりません
その為 exe のファイルサイズは小さく、dll が無ければ動きません
No.2
- 回答日時:
前提も踏まえた結果も違います。
後段も違います。
最初から勉強し直しましょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jarファイル
-
binファイルを解凍したいの...
-
アクセス 壊れた? 「ファイ...
-
#include <Windows.h>というヘ...
-
VBAでのicsファイル変換
-
公文書のxmlファイルの開き方が...
-
warファイルをEclipseでプロジ...
-
Easy言語を使ったファイルの検...
-
Seasar2のdiconファイルの読み方
-
jarファイルはzipファイルと同...
-
HTAのウィンドウを閉じるには・...
-
自分で作成した重要ファイルを...
-
Latexで図番号だけを「図1.1」...
-
VB6で特定のファイルを閉じたい
-
既に開いているエクセルを閉じ...
-
.NETアプリを作ったときの .man...
-
DreamWeaver MX 2004でファイル...
-
CRCが一致する確率
-
EXCEL VBA EXCEL2000で「ファイ...
-
アメブロで音声ファイルを貼る方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
binファイルを解凍したいの...
-
アクセス 壊れた? 「ファイ...
-
コマンドプロンプトで作成日時...
-
公文書のxmlファイルの開き方が...
-
#include <Windows.h>というヘ...
-
.NETアプリを作ったときの .man...
-
exeファイルの中身を見る方法は...
-
jarファイル
-
自分で作成した重要ファイルを...
-
Seasar2のdiconファイルの読み方
-
VBAでのicsファイル変換
-
バッチ処理で追記コピーしたい
-
監視ツールを入れさせられまし...
-
参照するファイルをワイルドカ...
-
「ブルーファイル」と「グリー...
-
HTMLからのBATファイル実行
-
Latexで図番号だけを「図1.1」...
-
C言語---ファイルに出力したデ...
-
Windowsのエクスプローラーでフ...
-
warファイルをEclipseでプロジ...
おすすめ情報