ゼロからのCOM - DLLサーバのビルド

いちごパック > COM/ActiveXの解説 > ゼロからのCOM - DLLサーバのビルド
DLLとしてビルドするためには、DLL外部に公開する関数を指定するためにDEFファイルが必要になります。 DEFファイルはEXPORTSのあとに外部公開関数名を列挙したファイルで、CIchigo1の場合は次のファイルになります。
EXPORTS
    DllCanUnloadNow     PRIVATE
    DllGetClassObject   PRIVATE
    DllRegisterServer   PRIVATE
    DllUnregisterServer PRIVATE
    DllInstall          PRIVATE
PRIVATEはDLLビルド時に生成される.libファイルに、その関数を登録しないことを意味します。 指定しなくても問題ありませんが、リンカの種類によっては警告やエラーが出るかもしれません。
COMサーバをビルドする際は、リンク時に次のライブラリを与えてください。
kernel32.libuser32.libadvapi32.librpcrt4.libole32.liboleaut32.lib
プロジェクトを作成せずコマンドプロンプトからビルドする例は次のようになります。 スペースの都合上2行に分かれていますが、以下のコマンドは1行で与えます。
% cl /EHsc /MT /W3 /LD /Feichigocom1.dll ichigocom1.cpp ichigocom.def
    kernel32.lib user32.lib advapi32.lib rpcrt4.lib ole32.lib oleaut32.lib
ビルドが完成したら、regsvr32を用いてシステムに登録します。 regsvr32はWindows標準のツールです。
マシン全体に登録する場合は、管理者(Administrator)権限がある状態で次のコマンドを実行します。
% regsvr32 /s ichigocom1.dll
現在のユーザに対してのみ登録する場合は、次のコマンドを実行します。
% regsvr32 /s /i:user /n ichigocom1.dll

関連ページ

  • COM/ActiveXの解説ページ 目次
  • 前の項目: DLLサーバの自己登録
  • 次の項目: DLLサーバの動作確認