質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

1回答

1945閲覧

パソコンの構造について。

退会済みユーザー

退会済みユーザー

総合スコア0

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

0クリップ

投稿2021/05/13 12:43

編集2021/05/13 13:49

スタティック・リンク・ライブラリの中には、オブジェクトコードが入っているのでしょうか?ご教授いただけないでしょうか?すみません。で、インポート・ライブラリの中にもオブジェクトコードが入っていて、そのオブジェクトコードの一部を取り出したものなのでしょうか?ご教授いただけないでしょうか?すみません。
https://6900.teacup.com/cgu135/bbs/1067

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasima20

2021/05/13 12:59

インポート・ファイルの中にはDLLに関する情報が入っていると書いてありますよ?
dodox86

2021/05/13 13:00

少なくとも「パソコンの構造」についてではないですね。 何かどこかで見た覚えのある参考リンク先の画像でしたが、 同じ質問者による[C言語についての疑問について。] https://teratail.com/questions/334668 で取り挙げていたものですね。
退会済みユーザー

退会済みユーザー

2021/05/13 13:05

では、スタスティック・リンクライブラリの中には何が入っているのでしょうか?また、インポート・ライブラリの中にはDLLに関する情報が入っているとはどこに書かれているのでしょうか?ご教授いただけないでしょうか?takasima20さん。
thkana

2021/05/13 13:11

「インポート・ファイル」という言葉は少なくとも示された範囲に出てきていないような気がしますが? まずは勝手な言葉を作り出して混乱することなどないように、注意深く解説を「読む」べきかと思います。
dodox86

2021/05/13 13:15

言葉の話で付け加えるならば、「スタスティック」ではなく「ダイナミック(dynamic / 動的)」に対する「スタティック(static / 静的)」です。
takasima20

2021/05/13 13:48 編集

いや、下の画像の文章のなかにそのような記述があるようにみえましたが? あ、正確にはインポート「ライブラリ」でしたね。失礼しました。
jbpb0

2021/05/13 21:41

> インポート・ライブラリの中にはDLLに関する情報が入っているとはどこに書かれているのでしょうか? 文章のページの、「実際には...インポート・ライブラリと呼びます」のところのことではないですかね
jbpb0

2021/05/13 22:15

> スタティック・リンク・ライブラリの中には、オブジェクトコードが入っているのでしょうか? そうです 文章のページの、「それに対して...スタティック・リンク・ライブラリと呼びます」のところ
退会済みユーザー

退会済みユーザー

2021/05/13 23:01

では、インポート・ライブラリの中にもオブジェクトコードが入っていてその一部を取り出したという事でしょうか?ご教授いただけないでしょうか?すみません。
thkana

2021/05/13 23:58

他とのマルチポストのために外部に図を貼ったのでしょうが、できるだけ他サイトに頼らずに完結できるよう、ここに図を直接貼ってください。
guest

回答1

0

ベストアンサー

元の図にイマイチ納得できないところもあったので書き直してみました。
プログラムのオブジェクトやスタートアップにも使われていない関数があったら抽出ということになるのじゃないかとかいろいろありますけれど、とにかくスタティック(ファイルに固定化される形)にオブジェクトを結合して実行可能ファイルを作るのがスタティックリンク(というか普通「リンク」というとこれでしょう)。で、実行時にメモリイメージにオブジェクトを取り込むのがダイナミックリンク。

これで質問の内容は包含していると思いますが、適切でないところがあればツッコミ歓迎です。

イメージ説明

投稿2021/05/14 00:12

thkana

総合スコア7703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/05/14 06:37

では、インポートライブラリの中にもオブジェクトコードが入っていて、オブジェクトコードの一部を取り出したという事でしょうか?ご教授いただけないでしょうか?すみません。
thkana

2021/05/14 11:14

そもそも、インポートライブラリというのが「目的がDLLを呼び出すためのライブラリ」というだけでそれ自体はスタティックリンクのライブラリですから、リンク時には特殊なことはありません(厳密にはDLLのパスとかが埋め込まれるのかも知れませんが...あまり深くは知りません)。
退会済みユーザー

退会済みユーザー

2021/05/15 01:42

実行時にメモリイメージにオブジェクトを取り込むのがダイナミックリンク。というのはどういう事だしょうか?ご教授いただけないでしょうか?すみません。
thkana

2021/05/15 03:02

どういうことと言われても... それこそ「パソコンの構造」に踏み込みますけれど、「プログラムを実行する」ってどういうことだと思っていますか? いろいろバリエーションはありますけれど、現代のコンピュータの基本は、メモリ上にあるコードを読み取ってCPUがその通りに動く、ことです。 ですから、期待のプログラムを動かすということは、メモリ上の適切な位置に適切なコードをどうやって配置し、制御を移すか、ということに帰着します。 そのためにしばしば取られる手段の一つが「実行ファイルをメモリ上に展開して、プログラムの開始位置に制御を移す」ことです。そのために必要なメモリイメージを集めて一つの実行ファイルを作り上げる作業の段階のひとつが(スタティック)リンクでした。 そして、個々のファイルが持っていたら重複が多くなって無駄だったりする情報を共通に持っているライブラリを、実行時に(プログラムの動作の一環として)メモリ上の適切な場所に読み込んで適切に使う仕組みがダイナミックリンクライブラリです。 なんだか新版が出たみたいですが、「プログラムはなぜ動くのか」とかそのへんの本を読んでみてはいかがでしょうか。(新版がどういう出来か知りませんが...)
dodox86

2021/05/15 03:16

他の質問にも言えますが、全般的にいただいた回答を理解する前提知識に欠ける気がするのですが、言い過ぎでしょうか。その前提知識をも(質問者氏にとって)分かり易く教えてと言うのであれば、それはちょっと質問の範囲を超え過ぎなのだと思います。
退会済みユーザー

退会済みユーザー

2021/05/15 06:26

つまり、インポート・ライブラリが、user32.dll を呼び出しその中に、MsseageBoxオブジェクト(色んなオブジェクトコード)が入っているという事でしょうか?で、MessageBox呼び出すオブジェクトが、user32.dllを呼び出している(元はインポート・ライブラリから抽出したものだから。)という事でしょうか?教えていただけないでしょうか?すみません。
thkana

2021/05/15 06:35

「DLLを呼び出す」という言葉が適切でなかったかなぁ、とはちょっと思いつつ。 既に書いたことを何度も念押しされると説明している方も自分の説明に自信をなくします。 あの図から他の解釈ができますか?
退会済みユーザー

退会済みユーザー

2021/05/15 06:38

つまり、あなたの説明は、私のつまり、インポート・ライブラリが、user32.dll を呼び出しその中に、MsseageBoxオブジェクト(色んなオブジェクトコード)が入っているという事でしょうか?で、MessageBox呼び出すオブジェクトが、user32.dllを呼び出している(元はインポート・ライブラリから抽出したものだから。)という事でしょうか?教えていただけないでしょうか?すみません。という解釈で合っているという事ですね?ご教授いただけないでしょうか?すみません。
thkana

2021/05/15 06:58

ハイ、ソウデス。 (なぜこんなに問い詰められなければならないんだろう?)
退会済みユーザー

退会済みユーザー

2021/05/15 06:59

ありがとうございました。
thkana

2021/05/15 21:46

他所に持ち出してこういうことするのはやめてくださいね。 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10243227990 つけた回答は違反として削除にしたようですが、回答してほしくないなら向こうにはブラックリスト(ブロック)機能がありますから間違って回答しないようにリストに入れておいてください。
退会済みユーザー

退会済みユーザー

2021/05/26 17:08

import32.libを情報屋で、Messagebox ()を呼び出すオブジェクトを 探偵で、user32.dllを犯人とすると、情報屋が探偵に依頼して、犯人をおびき寄せ犯人が真相を話す。みたいな感じでしょうか?教えていただけないでしょうか?すみません。
thkana

2021/05/26 22:51

回答してほしくないという扱いをうけたので回答を拒否します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問