top of page

[C]動的リンクとは


概要

前回、コンパイルとリンクについて説明しました。

今回は動的リンクについて説明します。



動的リンク

前回の説明では、リンクをすると関数のアドレスが決まり、関数呼び出しはそのアドレスへのジャンプになると説明しました。


この時、関数の定義コードが全てexeファイルとして一つにまとめられるものを静的リンクと呼びます。


一方、関数の定義コードがexeとは別のファイルに存在する場合を動的リンクと言います。

この別ファイルをdllファイルと呼びます。

動的リンクの場合、ジャンプ先の関数のアドレスは実行時に決まります。


このように関数の定義コードを分離しておくと、exeファイルをコンパイルし直さなくてもdllファイルを置き換えれば関数の中身を変えることができます(巨大なアプリケーションの一部の関数だけを修正したい場合などに有効です)。




まとめ

関数のコードが同じexe内にあり、ジャンプ先の関数のアドレスがリンク時に決定するのが静的リンク、関数のコードが異なるファイル内にあり、ジャンプ先の関数のアドレスが実行時に決定するのが動的リンクです。

最新記事

すべて表示

[C]コンパイルエラーとリンクエラー

概要 前回、コンパイルとリンクについて説明しました。 今回は、それを元にコンパイルエラーとリンクエラーについて説明します。 コンパイルエラー コンパイルで行われるのは 1 コードのバイナリ化 2 あるものリスト、欲しいものリストの作成...

Comments


カテゴリ

あなたの買い物をサポートする
アプリ Shop Plan

iphone6.5p2.png

​いつ何を買うかの計画を立てられるアプリです。

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

靴を大切にしよう!靴管理アプリ SHOES_KEEP

納品:iPhone6.5①.png

靴の履いた回数、お手入れ回数を管理するアプリです。

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

「後で読む」を忘れないアプリ ArticleReminder

気になった​Webサイトを登録し、指定時刻にリマインダを送れるアプリです

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png
bottom of page