• 締切済み

エントリポイントという名前の使い方

C言語でWindowsプログラミングの勉強をしています. DLLを作成する際の関数として,エントリポイントというのがありますが, これはDLLがロードまたは解放される時に自動的に実行される関数のことで すよね. ですが,ある本に,「GetProcAddressで任意のエントリポイントのアドレ スを取得する」という記述がありました. GetProcAddressの仕様として間違いではないのでしょうが,上記の文章の 「エントリポイント」を「DLL内の関数」で置き換えれば納得がいきます. エントリポイントという言葉の定義をWikipediaで調べても,任意の関数の アドレスという意味は見当たりませんし,本が間違っているのかはわかり ませんが,DLLを使用する際の関数のアドレスの意味で「エントリポイン ト」という言葉は使われるのでしょうか?

noname#129397
noname#129397

みんなの回答

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.3

>ですが,ある本に,「GetProcAddressで任意のエントリポイントのアドレスを取得する」という記述がありました. 「関数の入り口」の事を「関数のエントリポイント」または「エントリポイント」と表現する場合があります。 この「エントリポイント」は「DLLがロードまたは解放される時に自動的に実行される関数」とは異なる意味の「エントリポイント」です。 「引数で与えた任意の関数」の「関数の入り口(関数のエントリポイント)のアドレスを取得」するのを縮めれば「任意の(関数の)エントリポイントのアドレスを取得する」になります。 意味としては間違ってないですが「DLL関連の記述で、むやみやたらと『エントリポイント』と言う単語を使うのは好ましくない」ですね。

回答No.2

ANo.1さんに一票 補足すると「entry point」とは単に「入り口の位置」程度の意味で、 いわゆるMS語(笑)。「本当の意味」など保障してくれる人は いませんので自分の頭で考えましょう。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

単に誤植されただけなのかも ・・・ 『エントリポイント』と『エクスポート』を取り違えた感じがしますよ GetProcAddressは『エクスポート』済み関数のアドレス取得のためのAPIですから

関連するQ&A

  • プロシージャエントリーポイント

    教えて下さい 最近パソコン立ち上げると 下記のメッセージがでます。 プロシージャエントリーポイントSqlite3-wal-checkpointがダイナミックリンクライブラリーsqlite3.dllがみつかりませんでした。どういう意味のメッセジでしょうか また出ないように。するには。どうしたら よいのでしょうか 教えて下さい

  • エントリポイントとエンドポイントの違い

    Web APIのドキュメントを作成しています。 参考になるものがないかWebで検索してみたところ、 クライアントがWebAPIを利用するときに、アクセスするURLのことを エントリポイント、エンドポイントと表現する場合があるようです。 エントリとエンドでは、意味が全く違うので少し混乱しています。 どのように使い分けされているのかを教えてください。 自分なりの解釈は次の通りです。 エントリポイント:サービスを提供する側の視点の言葉。 URLにアクセスがあることでAPIサービスの処理が開始されるので、 エントリ=”入り口”という言葉が使われる。 エンドポイント:サービスを利用する側の視点の言葉。 そのURLにアクセスさえすれば、それ以上何もしなくてもいい(APIに任せる)ので、 エンド="終点"という言葉が使われる。

  • エントリポイントが見つかりません。

    先週まで、出なかったエラーメッセが昨日の朝から急に出るようななりました。 エラーメッセの内容は・・・ ash Disp.exe エントリポイントが見つかりません。 プロシージャエントリポイント DSA_File Verifyが ダイナミックリンクライブラリ aswCmnS.dllから見つかりませんでした。 と言う内容です。 起動時に先週までと違う現象があります。 先週まではパスワードを入力する時に毎回「NumLock」キーを押してからじゃないと数字入力ができなかったのですが、 エラーが出始めた昨日から、なぜか起動時に既に「NumLock」がオンになっている状態になっています。 この現象が関係あるのかどうか分かりませんが、とりあえず心あたりを上げて見ました。 昨日、自分なりに調べてみましたが、意味が分からず解決に至りませんでした。 パソコンに詳しい方、技術者の方、ご回答よろしくお願いします。 助けてください。。。

  • VC++でDLL、エントリポイントが出来ない?

    VisualStudio2010 VC++でDLLを作成し既存のDelphiXE2アプリで利用したいのですが MSのサンプルソースそのままでDLLを作成しても、__stdcall;しても、Delphiの読み込み時に 「エントリポイントが見つかりません」と言われます。 http://msdn.microsoft.com/ja-jp/library/ms235636.aspx ソースはMSのチュートリアルそのままです。 ためしに VS2010のツール dumpbin.exe /exports ????.dll と中身を覗くと 1 0 ooo11104 ?Add@MyMathFuncs@MathFuncs@@SGNNN@Z 2 1 ,,,,,,,,,,,,,, のような表示とSummary 以下しか表示されずスタティックライブラリにしても中身は同じです。 それでは、と他のDLLをいくつか覗いてみましたが、大概のDLLやLIBファイルを覗くと すっきりしたきれいな関数名の一覧がdumpbin /exports で表示されます。 では、DLLになっていないのかというと、作ったDLLを同じVC++でチュートリアル通りに 呼び出すと何の問題もなく使えますので、多分正常なのでしょう。 しかし、どうして エントリポイントの一覧が見える形にならないのか分かりません。多言語で利用するには 必要かと思います。 VC++で作成したDLLやLibが他の環境で使えないとは考えられないので、なにか、常識的な 部分を知らないのだと思いますが、どなたかよろしくお願いします。

  • SetPoint.exe-エントリポイントが見つかりません

    WindowsXPを起動すると毎回 「プロシージャエントリポイント ?ReadDword@CRegistryClass@@QAEKV?CStringT@StrTraitMFCDLL@WV? $ChTraitsCRT@W@ATL@@@@@ATL@@K@Zがダイナミックリンクライブラリ KemUtil.dllから見つかりませんでした。」 というエラーメッセージが出ます。 このメッセージの意味と対処法を教えてください。

  • プロシージャエントリポイントが見つかりません

    2005年4月製NEC「LaVieG」ノートを使用しています。一ヵ月ほど前からパソコンを立ち上げる際に、ACU.exeエントリポイントが見つかりません 「プロシージャエントリポイント?writeConfig@AcAdapterConfig@@AEHXZがダイナミックリンクライブラリathcfg11.dllから見つかりませんでした」 と表示されます。心当たりといえば、NECの121ポップリンクより表示されたトリプルワイヤレスLAN(802.11a/b/g準拠SuperAG(TM対応)ドライバ及びユーティリティforWindowsXP (ID:5160)のインストールではないかと思いますが・・・。 アンインストールし、再度のインストールを試しましたが、このメッセージは消えません。(アンインストールし再起動した際には別のメッセージが出ました) また、再インストール後にバージョンを確認しても正常値です。 現在、無線LANを全く使用していない為、無線LANの設定もしていません。その為、どのような状況かさっぱりわからず困っています。 どこを確認し、どのように対処すればよいでしょうか。教えていただけますよう宜しくお願いいたします。

  • 至急です!!!

    リクナビなどの就活サイトに登録する際はPCのアドレスと携帯のアドレ スの両方を登録しますか?

  • プロシージャエントリポイントとDLLのエラーについて

    最近PCを起動する際、起動した直後、 プロシージャ エントリ ポイント ?SupportHotKeyDef@CSiSEscExt@@QAEKXZ がダイナミック リンク ライブラリ SiSApCom.dllから見つかりませんでした。 というエラーが出ます。 この現象は、ドライバをいじった時期から始まりました。 これはドライバが直接の原因なのでしょうか? この後にPCの動作に支障が出るというと、大してそうでもなく、問題無く動作します。 しかし、気になるのでこのエラーに関しての解決策を教えていただきたいです。多くの回答をお待ちしています。

  • VC2005のDLL明示的リンク

    VC2005のDLL明示的リンクについて質問です。 <前提> DLLファイルに宣言されている関数(Export関数)が、 4ファンクションあるとします。そのDLLファイルを、 Dependency Walkerで確認すると、以下のようになります。 --------------------------- 関数名 エントリポイント --------------------------- add1 0x00001010 sub2 0x00001030 mul3 0x00001060 div4 0x00001090 <質問> このDLLファイルがexeファイルからLoadLibraryで 読み込まれた場合、プロセスメモリ上には、 上記のエントリポイントの順番で必ず配置されるのでしょうか? 補足ですが、この時、プロセスメモリ上にロードされる位置 は、気にしていません(ベースアドレスは変わることがあるのは認識しています)。 要は、エントリポイントの順番が変わったりしないかを、知りたいです。 <プロセスメモリ上に、エントリポイント順に配置されたイメージ> 0000_0000h --------------------------- (略) --------------------------- add1 --------------------------- sub2 --------------------------- mul3 --------------------------- div4 --------------------------- (略) --------------------------- FFFF_FFFFh <プロセスメモリ上に、エントリポイント順に配置されなかったイメージ> 0000_0000h --------------------------- (略) --------------------------- sub2 --------------------------- add1 --------------------------- div4 --------------------------- mul3 --------------------------- (略) --------------------------- FFFF_FFFFh それとも、こんな感じで、OS依存(実行環境依存)で、色々な配置に なるのでしょうか?

  • C++ のDLLがdelphiで読めない

    VisualStudio2010C++で作ったDLLをdelphiで利用したいのですが、「エントリポイントが 見つかりません」といわれてしまいます。チュートリアルのサンプルそのままで試して見ましたが、VS2010 付属のdumpbin .exe でdllの中身を見るとエントリポイントが @ILT+345?Add@MyMathFuncs@MathFuncs@@QAGNNN@Z)みたいな、元の関数名はどうした? と思えるような名前です。 defファイルを使って見ましたが、今度は 1 0 0001115E Add = @ILT+345(?Add@MyMathFuncs@MathFuncs@@QAGNNN@Z) みたいな表示でやはりdelphiから読めません。__stdcall にはしています。 VC++で読み込めばちゃんと読めるのである意味正しく作られているのだと思いますが、他のOpenNI , OpenGL などのdllをdumpbin /exports で覗くと、整然と関数名が並び、 これなら読めるだろうと思えますし、実際にdelphiでも使えます。 他の言語ですっきり関数名で呼び出せる(普通の)DLLを作るにはどうすれば良いのでしょうか。 VisualStudioで作ったDLLは呼ぶ側があの記号のような名前で呼べということなのでしょうか?