Cur: 2009-09-25 (Fri) 15:24:46 SHOO source Edit
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の挙動に気を付けてください。
  

  • Backup diff of HowTo/ダイナミックリンクライブラリを作る(No. All)
    • Cur: 2009-09-25 (Fri) 15:24:46 SHOO

Front page   Edit Diff Backup Upload Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 1358, today: 1, yesterday: 0
メインメニュー

ログイン

ユーザー名:


パスワード:





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

Menu