現: 2009-09-25 (金) 15:24:46 SHOO ソース 編集
Line 1: Line 1:
 +TITLE:ダイナミックリンクライブラリを作る
 +* 概要 [#v7657bd4]
 +Windowsのダイナミックリンクライブラリ(dll)の作成法です。~
 +Linuxの共有ライブラリ(so)とは作り方が異なります。~
 +基本的には dmd のコンパイラスイッチで -ofXXXX.dll といった感じに、拡張子dllをつけ、DllMainを記述することになります。~
 +また、必要に応じてdefファイルを記述します。
 +* DllMain [#ea7a5e0a]
 +例としては以下のような感じになります。
 +この例はTangoを利用する場合のものです。
 +#code(d){{{
 +extern (C) bool rt_init( void delegate( Exception ) dg = null );
 +extern (C) bool rt_term( void delegate( Exception ) dg = null );
 +
 +import win32.windows;
 +pragma(lib, "win32");
 +pragma(lib, "tango-user-dmd");
 +
 +extern (Windows)
 +BOOL DllMain(HINSTANCE hInstance, ULONG ulReason, LPVOID pvReserved)
 +{
 +    switch (ulReason)
 +    {
 +    case DLL_PROCESS_ATTACH:
 +     rt_init();
 +     break;
 +    
 +    case DLL_PROCESS_DETACH:
 +     tango.stdc.stdio._fcloseallp = null;
 +     rt_term();
 +     break;
 +    
 +    case DLL_THREAD_ATTACH:
 +    case DLL_THREAD_DETACH:
 +     return false;
 +    default: assert(0);
 +    }
 +    return true;
 +}
 +}}}
 +
 +* defファイル [#la0bd21d]
 +#code(def){{{
 +LIBRARY "test.dll"
 +EXETYPE NT
 +SUBSYSTEM WINDOWS
 +CODE SHARED EXECUTE
 +DATA WRITE
 +EXPORTS
 +    Initialize
 +    Finalize
 +}}}
 +
 +* その他注意事項 [#ye827861]
 +GCの挙動に気を付けてください。
  

  • HowTo/ダイナミックリンクライブラリを作る のバックアップ差分(No. All)
    • 現: 2009-09-25 (金) 15:24:46 SHOO

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 1059, today: 1, yesterday: 3
メインメニュー

ログイン

ユーザー名:


パスワード:





パスワード紛失  |新規登録

Menu