###
1 動的リンクライブラリをロードする

動的リンクライブラリをロードするために、`ctypes`はcdllをエクスポートします。 Windowsではさらにwindllとoledllオブジェクトもエクスポートします。

これらのオブジェクトの属性としてライブラリにアクセスすることでライブラリをロードします。 cdllは標準`cdecl`呼び出し規約を用いて関数をエクスポートしているライブラリをロードします。 それに対して、windllライブラリは`stdcall`呼び出し規約を用いる関数を呼び出します。 oledllも`stdcall`呼び出し規約を使いますが、関数がWindows `HRESULT`エラーコードを 返すことを想定しています。このエラーコードは関数呼び出しが失敗したとき、 `WindowsError` Python例外を自動的に発生させるために使われます。

Windows用の例ですが、`msvcrt`はほとんどの標準C関数が含まれているMS標準Cライブラリであり、 cdecl呼び出し規約を使うことに注意してください:

    >>> from ctypes import *
    >>> print windll.kernel32 # doctest: +WINDOWS
    <WinDLL 'kernel32', handle ... at ...>
    >>> print cdll.msvcrt # doctest: +WINDOWS
    <CDLL 'msvcrt', handle ... at ...>
    >>> libc = cdll.msvcrt # doctest: +WINDOWS
    >>>

Windowsではいつもの'.dll'ファイル拡張子を自動的に追加します。

Linuxではライブラリをロードするために拡張子を含むファイル名を 指定する必要があるので、属性アクセスは動作しません。 dllローダーの`LoadLibrary`メソッドを使うか、 コンストラクタを呼び出してCDLLのインスタンスを作ることでライブラリを ロードするかのどちらかを行わなければなりません:

    >>> cdll.LoadLibrary("libc.so.6") # doctest: +LINUX
    <CDLL 'libc.so.6', handle ... at ...>
    >>> libc = CDLL("libc.so.6")     # doctest: +LINUX
    >>> libc                         # doctest: +LINUX
    <CDLL 'libc.so.6', handle ... at ...>
    >>>