イベントログの書き込みなどで利用する「メッセージファイル DLL」を作成する手順を紹介します。
事前準備
Visual Studio をインストールします。Visual Studio 2017のインストール手順は
こちらの記事を参照して下さい。
メッセージテキストファイルの作成
DLL作成の元となる "Message Text File" を作成します。ファイルの書式については
こちらを参照してください。
下記のファイルを作成します。ファイルのエンコーディングはShift-JISで保存します。また、最後の行に空行を1行入れることに注意してください。
;// ***** LogMessagese.mc *****
;// This is the header section.
MessageIdTypedef=DWORD
SeverityNames=(Success=0x0:STATUS_SEVERITY_SUCCESS
Informational=0x1:STATUS_SEVERITY_INFORMATIONAL
Warning=0x2:STATUS_SEVERITY_WARNING
Error=0x3:STATUS_SEVERITY_ERROR
)
FacilityNames=(System=0x0:FACILITY_SYSTEM
Runtime=0x2:FACILITY_RUNTIME
Stubs=0x3:FACILITY_STUBS
Io=0x4:FACILITY_IO_ERROR_CODE
)
LanguageNames=(English=0x409:MSG00409)
LanguageNames=(Japanese=0x411:MSG00411)
;// The following are message definitions.
MessageId=0x1001
Severity=Error
Facility=Runtime
SymbolicName=MSG_BAD_COMMAND
Language=English
You have chosen an incorrect command.
.
Language=Japanese
正しくないコマンドです。
.
MessageId=0x1002
Severity=Warning
Facility=Io
SymbolicName=MSG_BAD_PARM1
Language=English
Cannot reconnect to the server.
.
Language=Japanese
再接続できませんでした。
.
MessageId=0x1003
Severity=Success
Facility=System
SymbolicName=MSG_STRIKE_ANY_KEY
Language=English
Press any key to continue . . . %0
.
Language=Japanese
続けるには、何かキーを押してください . . . %0
.
MessageId=0x1004
Severity=Error
Facility=System
SymbolicName=MSG_CMD_DELETE
Language=English
File %1 contains %2 which is in error.
.
Language=Japanese
ファイル %1 には エラー %2 が含まれています。
.
MessageId=0x1005
Severity=Informational
Facility=System
SymbolicName=MSG_RETRY
Language=English
There have been %1!d! attempts with %2!d!%% success%! Disconnect from the server and try again later.
.
Language=Japanese
%1!d! 回の試行で %2!d!%% しか成功しませんでした%! サーバーとの接続を切断し、後で再試行してください。
.
Message Compiler による mcファイルのコンパイル
mc.exe を利用して作成したmcファイルをコンパイルします。
スタートメニューのVisual Studio のプログラムグループの"Native Tools コマンドプロンプト"のショートカットをクリックします。
下図のコマンドプロンプトが表示されます。
下記のコマンドを実行します。
今回の例では下記のコマンドとなります。
エラーが表示されずコマンド入力待ちになれば成功です。
コンパイルに成功すると、mcファイル名と同名のヘッダファイル(*.h)、リソースファイル(*.rc)、バイナリファイル(*.bin)、今回の例では、"LogMessages.h", "LogMessages.rc", "MSG00409.bin", "MSG00411.bin" の4つのファイルが作成されます。
Resource Compiler による rcファイルのコンパイル
rc.exe を利用して、生成された*.rc ファイルをコンパイルして、リソースファイルを作成します。
下記のコマンドを実行します。
今回の例では下記のコマンドとなります。
エラーメッセージが表示されず、コマンド入力待ちになれば成功です。
コンパイルができると、*.res ファイルが作成されます。
リンカによるDLLファイルの作成
link.exe を利用してDLLファイルを作成します。
下記のコマンドを実行します。
link /NOENTRY /MACHINE:X86 /DLL (resファイル)
今回の例では下記のコマンドとなります。
link /NOENTRY /MACHINE:X86 /DLL LogMessages.res
エラーメッセージが表示されず、コマンド入力待ちになれば成功です。
リンクが成功するとDLLファイルが作成されます。
メッセージファイル DLLが作成できました。
補足
作成したメッセージDLLを利用してイベントログに書き込むプログラムの実装は
こちらの記事を参照して下さい。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2020-02-01
作成日: 2018-08-29