なぜ必要だ。libスタブファイルが入ったのを見込んでいます。dll実行?

StackOverflow https://stackoverflow.com/questions/1297013

  •  18-09-2019
  •  | 
  •  

質問

私はなぜ配できない仕事だけでコンサルティング情報を見込んでいます。dllファイルの実際のコードについて教えてください。いのはなぜ配が必要です。libファイルをいう暗黙のリンク?

の輸出に対する相対アドレスのテーブルに十分なリンク?

直しとかは出来ないんですかできない暗黙的なリンクのみを使用します。dllなします。libスタブ/proxyファイル?

と思い、windowsで実行可能なローダがないLoadLibrary/LoadLibraryEx電話に代わってプログラムは、この暗黙のリンク)の主な違いを明示的にリンクという場合はtrueを、その明示的になっております。lib示す必要があることが可なので暗黙のうちに。やっ外です。

のお役に立てるようであり、多くの協力:)

geeko

役に立ちましたか?

解決

私はあきらめないで前向きに考えてい理由がいくつかあります。

  • ます。libファイルを意味することで作ることができるためのバージョンの異なるDLLよいシステムは、あなただけにSDKを設置。
  • コンパイラでコンパイル&志をサポートする必要があるクロスプラットフォーム編集-きの建物のための64ビットの対象となり、32ビットplatform逆において、正しい建築のDLLです。
  • .libファイルを非表示になります"ある部品の実装でき、プライベ輸出しないホームページからシンプル。libが含よGetProcAddress.することができま通常の輸出をお持ちでない場合は、名前に輸出されない名前。lib.
  • ネイティブのDLLのない強い名前で可能で迎えに間違い版DLL.
  • 最も重要なのは、この技術を設計したのは1980年。また、今では思いっきに近づけについて説明していただけま-たとえば、.純だけの参照対象の組立ものだけを使用する必要があります。

わからないのない暗黙的なリンクは、DLL、クイック検索明がんに使ったという。

この場合、私の作成を別のソースファイルの機能を使用する必要があり、動的に負荷のDLLと結合します。例えば:

// using global variables and no-error handling for brevity.

HINSTANCE theDll = NULL;
typedef void (__stdcall * FooPtr)();
FooPtr pfnFoo = NULL;
INIT_ONCE initOnce;

BOOL CALLBACK BindDLL(PINIT_ONCE initOnce, PVOID parameter, PVOID context)
{
    theDll = LoadLibrary();
    pfnfoo = GetProcAddress(dll, "Foo");

    return TRUE;
}

// Export for foo
void Foo()
{
    // Use one-time init for thread-safe lazy initialization
    InitOnceExecuteOnce(initOnce, BinDll, NULL, NULL)
    pfnFoo();
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top