A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
No.3
- 回答日時:
うーん、どう説明しよう・・・・
インポートライブラリに入っている MessageBox はこんなコードに
なってます。
#実際のコードは、関数ごとにLoadLibraryする必要はないとか、
#エラー処理とかで随分違うはず・・・
int MessageBox(・・・・)
{
:(宣言等)
h = LoadLibrary("USER32.DLL"); // DLLをメモリにロード
proc = getProcAddress(h, "MessageBox"); // エントリポイントを取得
return proc(・・・・・・・); // 呼び出し
}
スタティックリンクライブラリ(インポートライブラリ)から
アプリにリンクされるのは、このスタブ的なコードだけ。
MessageBoxの実体は USER32.DLL の中にあります。
これが、わかるためにはC言語の本を読んだほうがいいと先生から言われたのですがこのことがわかるおすすめのC言語の本があればご教授いただけないでしょうか?すみません。
No.2
- 回答日時:
>では、インポートライブラリから抽出して、
>Message Box ( )を呼び出すための情報になるのは、
>どういう事でしょうか?
「Message Box ( )を呼び出すための情報」というのは
要するにソースファイルの中に
MessageBox(・・・・
と書かれていること。これに基づいてインポートライブラリから
「USER32.DLL のMessage Boxを呼び出すオブジェクトコード」
が抽出され、アプリにスタティックリンクされます。
#インポートライブラリにはいろんな API を
#呼び出すオブジェクトコードがたくさん入っていますが
#使わないコードは抽出されず、リンクされません。
このリンクされたコードが DLL から Message Box のオブジェクト
コードを USER32.DLL からメモリにロードし実行するのです。
「USER32.DLL のMessage Boxを呼び出すオブジェクトコード」
が抽出され、アプリにスタティックリンクされます。
とは、どういう事でしょうか?ご教授いただけないでしょうか?
インポートライブラリからMessage Box (・・・・を抽出して、USER32.DLL
の中から、Message Boxを呼び出すという事でしょうか?ご教授いただけないでしょうか?すみません。
No.1
- 回答日時:
import32.lib というのは「インポートライブラリ」と呼ばれる種類の
スタティックリンクライブラリで、アプリに直接リンクされます。
この中に USER32.DLL に入っている MessageBox という関数を呼び出す
コードがMessageBoxという名前で(わざと同名にして)入っているのです。
DLL中の関数を呼び出すには
LoadLibrary という関数で、DLLをメモリにロードし、
GetProcAddress で関数のエントリポイントのアドレスを
取得して、その関数ポインタを使って関数をコールする
必要があります。
これを全部プログラムして USER32.DLL の MessageBox を
呼び出すことも可能ですが、めんどくさいので、
全部やってくれるインポートライブラリを使うのが普通です。
あなた独自の DLL やそのインポートライブラリも Visual Studio
で作れるので、一遍遊んでみるとよくわかると思います。
では、インポートライブラリから抽出して、Message Box ( )を呼び出すための情報になるのは、どういう事でしょうか?ご教授いただけないでしょうか?すみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Web初心者です。 簡易的なWebペ...
-
vba クリップボードクリアにつ...
-
python エラー
-
Google ColaboでGUI作成
-
python3について。
-
AIの登場でプログラマーたちが...
-
プログラマーと学歴の関係性に...
-
以下の技能を無料で受講できる...
-
プログラマーは誘惑にさらされ...
-
HTMLソースが表示のページのも...
-
pythonでのカーソル移動がずれる
-
プログラミング言語について
-
matplotlibでのLaTex表示
-
初心者powershellのPS1ファイル...
-
プログラマーに向いている人の...
-
このURLで広告を出しているのは...
-
pythonの画像の貼り付けについて
-
プログラミングの雑談がしたい...
-
python の 連鎖代入の文法
-
Lazarus(IDE2.2.6)をインスト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UNIX上のプログラムで使うライ...
-
拡張子.niiのファイルの開き方...
-
.NET(C#)でのスタックオーバー...
-
オブジェクトライブラリ
-
DXライブラリの画像の表示の仕...
-
Excel VBA のstr()関数でエラー
-
MakefileのLDLIBSとLOADLIBESの...
-
ライブラリParamQuery gridにつ...
-
pthreadのソースの入手方法
-
Googlemapのように画像を拡大・...
-
QRコード作成ライブラリ
-
ライブラリ内の処理中における...
-
自作ライブラリの作成方法
-
Unsatisfied code symbol エラ...
-
ライブラリとAPIについて
-
PDFファイルの文字を取得するプ...
-
コンパイル時のエラー
-
windows media playerでdropbox...
-
C++BuilderやDelphiでVC++用の...
-
jpegのバイナリデータを見る方法
おすすめ情報
以下も参考にしていただけると幸いです。
https://6900.teacup.com/cgu135/bbs/1067