概要 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の挙動に気を付けてください。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 637, today: 1, yesterday: 0
初版日時: 2009-09-25 (金) 15:24:46
最終更新: 2009-09-25 (金) 15:24:46 (JST) (2833d) by SHOO
メインメニュー

ログイン

ユーザー名:


パスワード:





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

Menu