概要 anchor.png Edit

Windowsのダイナミックリンクライブラリ(dll)の作成法です。
Linuxの共有ライブラリ(so)とは作り方が異なります。
基本的には dmd のコンパイラスイッチで -ofXXXX.dll といった感じに、拡張子dllをつけ、DllMainを記述することになります。
また、必要に応じてdefファイルを記述します。

Page Top

DllMain anchor.png Edit

例としては以下のような感じになります。 この例はTangoを利用する場合のものです。

Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
 
 
 
 
 
 
 
 
-
|
-
|
|
|
|
|
|
|
|
|
|
|
|
|
!
|
!
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;
}
Page Top

defファイル anchor.png Edit

1
2
3
4
5
6
7
8
LIBRARY "test.dll"
EXETYPE NT
SUBSYSTEM WINDOWS
CODE SHARED EXECUTE
DATA WRITE
EXPORTS
	Initialize
	Finalize
Page Top

その他注意事項 anchor.png Edit

GCの挙動に気を付けてください。


Front page   Edit Freeze 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: 1340, today: 1, yesterday: 0
Princeps date: 2009-09-25 (Fri) 15:24:46
Last-modified: 2009-09-25 (Fri) 15:24:46 (JST) (4088d) by SHOO
メインメニュー

ログイン

ユーザー名:


パスワード:





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

Menu