Back to page

− Links

 Print 

Libraries​/Bindings for the Windows API :: D言語友の会

wiki:Libraries/Bindings for the Windows API

Table of contents
  • 概要
    • 公式リンク
    • ライセンス
  • インストール
    • 手動インストール
    • dsssでのインストール
    • 使用方法
  • 逆リンク
  • 投票とコメント

概要 anchor.png[1] Edit [2]

Windowsのヘッダファイル

Page Top

ライセンス anchor.png[7] Edit [8]

[[Public Domain>Wikipedia:パブリックドメイン]]

Page Top

インストール anchor.png[9] Edit [10]

Page Top

手動インストール anchor.png[11] Edit [12]

  1. 必要なもの
    trunk_win32-rXXX.zip
    XXXの部分はリポジトリのリビジョンです。最新のもので良いでしょう。公式ページ[5]からダウンロードします。download a snapshot of latest revision in SVN (.zip)です。
    もちろん、svnのリポジトリをチェックアウトしてもOKです。
    svn co http://svn.dsource.org/projects/bindings/trunk/win32 win32

    GNU Make
    SourceforgeのMinGWのmake[13]からダウンロードしましょう。最新のものでいいと思います。mingw32-make-3.81-20080326-3.tar.gzなど。既に持っている場合は不要。

  2. trunk_win32-rXXX.zipを解凍します。
    • <解凍先>/trunk/win32というフォルダが解凍されます。

  3. mingw32-make.exeをgmake.exeとでも名前を変えてdmd.exeと同じフォルダか、<解凍先>trunk/win32の中に放り込みましょう。もちろん、すでにGNU Makeを使用しているのであればこの作業は不要です。
  4. ソースコードの修正 そのままコンパイルするとエラーが発生するため、いくつかコードを修正する必要があります
    1. makefile 25行目、importの設定のため、 -I.. をつけて正しくimportされるようにする必要があります。
      	$(DC) -I.. $^ -lib -of$@ $(DFLAGS)
    2. rpcnsi.d
      昔は引数にinoutを使うことができましたが、今はrefを使います。
      54行目のinoutをrefに直しましょう。
          //RPC_STATUS RpcNsEntryObjectInqDone(inout RPC_NS_HANDLE*);
          RPC_STATUS RpcNsEntryObjectInqDone(ref RPC_NS_HANDLE*);
    3. winsock2.d
      同様にinoutをrefに変更します
      136行目にinoutが存在するので、書き換えましょう。
      //void timerclear(inout TIMEVAL tvp) {
      void timerclear(ref TIMEVAL tvp) {
          tvp.tv_sec = tvp.tv_usec = 0;
      }
    4. winldap.d
      昔はデフォルトでprintfが使えましたが、今は使えません。したがって、使えるようにしてやる必要があります。具体的には
      private extern (C) int printf(in char* format, ...);
      の一行を ldap_perror 関数の上あたりに追加すればよいでしょう。
    5. directx/d3d10effect.d
      enumの前方参照でエラーのツッコミを受けます。 以下の3行を削除しましょう。
      // some forward references...
      enum D3D10_SHADER_VARIABLE_CLASS;
      enum D3D10_SHADER_VARIABLE_TYPE;
    6. directx/d3d10shader.d
      enumの前方参照でエラーのツッコミを受けます。 以下の3行を削除しましょう。
      // some forward references...
      enum D3D10_PRIMITIVE_TOPOLOGY;
      enum D3D10_SRV_DIMENSION;
    7. directx/d3d10.d
      enumの前方参照でエラーを回避するために、importの位置を変更する必要があります。(dmdのバグかなぁ) 具体的には、以下の2つのimport文を、ファイルの末尾(IID_ID3D10Multithreadの宣言の下)に持っていきます。
      public import win32.directx.d3d10shader;
      public import win32.directx.d3d10effect;
      また、定義のミスも修正します。1120行付近の、ClearRenderTargetViewの引数が間違っているので修正します。
      //void ClearRenderTargetView(ID3D10RenderTargetView pRenderTargetView, FLOAT[4] ColorRGBA);
      void ClearRenderTargetView(ID3D10RenderTargetView pRenderTargetView, FLOAT[4]* ColorRGBA);
  5. コンパイルします。<解凍先>/trunk/win32 にて、以下ののコマンドを実行してwin32.libを作成しましょう。
    1
    
    gmake
    注意点としては、 dmd.exe にパスが通っていなければなりません。
    Pathの通し方[14]を参考にするとよいと思います。
  6. その後、gmake.exeは削除して構いません。
  7. <解凍先>/trunk/win32 のフォルダを <dmd_dir>/import/win32 や <dmd_dir>/src/win32 など、importディレクトリに放り込みましょう。
    わかりやすいところで、object.diがあるところなどが良いかもしれません。
  8. 以上です。
Page Top

dsssでのインストール anchor.png[15] Edit [16]

dsssには現在対応していません

Page Top

逆リンク anchor.png[20] Edit [21]

Page Top

投票とコメント anchor.png[23] Edit [24]

Choices Vote
大変参考になった3  
参考になった0  
あまり参考にならなかった0  
まったく参考にならなかった0  

No comment. コメント​/Libraries​/Bindings for the Windows APIEdit[25]

Name:

Last-modified: 2010-02-03 (Wed) 23:14:32 (JST) (4370d) by SHOO