DLLとしてビルドするためには、DLL外部に公開する関数を指定するためにDEFファイルが必要になります。
DEFファイルはEXPORTSのあとに外部公開関数名を列挙したファイルで、CIchigo1の場合は次のファイルになります。
EXPORTS
DllCanUnloadNow PRIVATE
DllGetClassObject PRIVATE
DllRegisterServer PRIVATE
DllUnregisterServer PRIVATE
DllInstall PRIVATE
PRIVATEはDLLビルド時に生成される.libファイルに、その関数を登録しないことを意味します。
指定しなくても問題ありませんが、リンカの種類によっては警告やエラーが出るかもしれません。
COMサーバをビルドする際は、リンク時に次のライブラリを与えてください。
kernel32.lib | user32.lib | advapi32.lib | rpcrt4.lib | ole32.lib | oleaut32.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サーバの動作確認