タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

WindowsとDevelopmentに関するfujiyoshisyoutaのブックマーク (2)

  • ダイナミック リンク ライブラリ(DLL)の基礎知識

    1. DLLの作り方(VC++編) 関数subをDLLにしたい場合,次のようにソースプログラムを作成する. 外部プログラムから呼び出したい関数(この場合sub)の前に __declspec(dllexport)という おまじないをつけておく(このおまじないがついていない関数はDLL外部からは見えないので安心). #include <stdio.h> __declspec(dllexport) int sub(int arg) { printf("sub %d\n", arg); return arg + 1; } sub.c 通常の静的にリンクして利用する関数を作る場合(*.objまたは静的リンク ライブラリ*.libを作ってリンクする場合)との違いは, DLLの外に公開したい関数の定義の前に__declspec(dllexport)というキーワードがつけることだけになっている. [さらに

    fujiyoshisyouta
    fujiyoshisyouta 2009/08/16
    暗黙リンクの方がラク。だけど、明示的リンクだとlibが不要だったり、必要な時だけ読み込みたかったり、DLLのバージョンによって挙動を変えたかったりするときに対応可。
  • DLLとローダ 〜暗黙的リンクと明示的リンク | ぶろゲ

    DLLを触っている。 DLLからDLLを読み込もうとする場合、通常の方法でいける。ただし、DLLのロード場所によってはDLLの探索ディレクトリに含まれないため、DLLのロードができない場合が出てくる。 このDLLのロードの仕方には2つある。暗黙的リンクと明示的リンクという呼び名が存在する。 通常、暗黙的リンクを用いる。この場合、インポートライブラリ(LIB)をリンクする必要があるが、DLLのAPIを直接呼び出すことができる。暗黙的リンクの場合、実行時にDLLのパスを検索する。ロードできなければDLLが見つからないというメッセージと共に呼び出し元は終了する。 明示的リンクは、コード中、LoadLibraryを用いてDLLを呼び出す。LoadLibraryで得られたハンドルを使いGetProcAddressにて例えば”RegCreateKeyEx”を呼び出す。DLL内の限られたAPIだけを使用

    fujiyoshisyouta
    fujiyoshisyouta 2009/08/16
    環境変数のPATHに追加すれば,暗黙リンクでも任意のパスにあるDLLをロードしてくれるんじゃないかなぁ。
  • 1