コンパイル中に原因の特定できるエラーが発生したときは、コールバック関数にメッセージが渡されます。
HANDLE dllh; DCFUNC dumc; /*エラー処理は省略してるけど、本当は省略したらあかん*/ dllh=LoadLibrary("DUMCMAIN.DLL"); dumc=(DCFUNC)GetProcAddress(dllh,"dumc");
DUMCALLTYPE void errorcallback(PDUMVOID msg,PDUMVOID cap) { /*msg: エラーメッセージ*/ /*cap: キャプション(dumcの引数srcに渡した文字列)*/ /*例: ダイアログを表示する*/ MessageBoxEx(NULL,msg,cap,MB_APPLMODAL|MB_ICONSTOP|MB_DEFBUTTON1| MB_SETFOREGROUND|MB_OK,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT)); }
・返値
DUMCMAIN.DLLのヴァージョン情報を32bit値で返す。
これは8bitずつ4つのメンバで区切られ、上位から順にアンオフィシャル識別番号,メジャーヴァージョン,マイナーヴァージョン,リリースカウントとなっている。
なお、この関数はV0.30に追加したものであり、これより古いヴァージョンのDLLを対象に呼び出した場合はシステムエラーが出る。
・引数
buf | DMSソースの先頭アドレス |
size | DMSソースのサイズ(byte) |
src | ソース名(文字列ポインタ) エラーメッセージのキャプションとして使うだけなので、必ずしもファイル名である必要はない。 |
dest | DUM出力先のファイル名(文字列ポインタ) |
flag | スウィッチングフラグ(DUMCの/Fオプションで指定する値と同じ) |
cberr | エラー時に呼ばれるコールバック関数 |
usr | ユーザポインタ コールバック関数が呼ばれるときに渡される任意の値
|
usr | エラーコールバックに渡されるユーザポインタ(任意値) |
・処理内容
buf,sizeで示されるDMSソースをコンパイルし、ファイルdestに書き出す。
原因の特定できるエラーが発生したときは、関数cberrが呼び出される。
・返値
0 | 正常に処理完了 |
-1 | コールバック呼び出し対象のエラー(dumcとほぼ同じ, Illegal option と System critical のみ対象外)が発生。 cberrがNULLでも、呼び出し対象のエラーであれば -1 が返る。 |
other | コールバック呼び出し対象ではないエラーが発生。 |