高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先



QD3D 84 - QD3D Windows DLL のチェック

(更新日: 97年 7 月 11 日)

Q: QuickDraw 3D の「gestalt」と同様の、QD3D の存在を調べる方法が、Windows 側にもありますか。

A: Windows には gestalt に当たるものはありません。実際、Windows は、全システムが共有ライブラリ (DLL) で構築されているため、調べる必要はないのです。QD3D の存在を調べる最も簡単な方法は、QD3D ライブラリをロードしてみることです。

#if defined (DEBUG)
    hinst = LoadLibrary( "QD3D_D.DLL" );
#else
    hinst = LoadLibrary( "QD3D.DLL" );
#endif
    if ( hinst != NULL )
    {
       Q3GetVersion( &major, &minor );
       // QD3D を使う...
    }
    else
    {
       // QuickDraw 3D は存在しない
       // そのための処理...
    }
さらに、QD3D DLL はすべてバージョンリソースを持っているので、ライブラリをロードせずに、Win32 のバージョンコントロール API で調べることもできます。

QD3D のインストーラは、レジストリにいくつかのキーを登録します。これを使って QD3D がインストールされているかどうかを調べることができます。注意: ISV は、QD3D インストーラか同機能のインストーラを使って、QD3D をインストールしなければなりません。DLL をコピーするだけでは不十分です。例えば、HKLM\SOFTWARE\Apple Computer Inc\QuickDraw 3D\... を設定しなければなりません。

Windows には「ウィークリンク」に当たるものはありません。QD3D をリンクしているアプリケーションは、QD3D がないと、ロードされません。QD3D の存在を意識するアプリケーションは、LoadLibrarygetProcAddress などのルーチンを使って、QD3D をダイナミックにロードしてから、リンクしなければなりません。Mac OS アプリケーションが QD3D をリンクしておかないのは、メモリイメージを小さくするためであることを明記してください。これは、仮想メモリおよびローダのため、Windows では問題にはなりません。Windows では、実行時のメモリ使用のより正確な値はワーキングセットで得られます。

QD3D がワーキングセットに与える影響は、まだ初期化 (Q3Initialize) されておらず、使用前であれば、ごくわずかです。

QD3D ビューアは、明示的に 3DViewer.DLL にリンクしなくても使用できます。Windows SDK サンプルの「ViewerSampleWin32Only」を参照してください。

----------------------------------------------------------------------------
-- Scott Kuechle
devsupport@apple.com

[ Technical Q&A's : Graphics & Media : QuickDraw 3D [QD3D] : : QD3D 84 ]