私が抱えていた問題について Stackoverflow を検索しましたが、それらはすべてその特定のアクセス違反に非常に固有のものでした。
私が問題を抱えていると思われるコードはMpqExtractFile
、DLL に格納されている という関数です。
関数:
function MpqExtractFile(var hMPQ: Integer; szToExtract, szExtracted: AnsiString): Boolean; stdcall; external 'MpqLib.dll' name 'B2';
電話:
if MpqExtractFile(hMPQ, 'war3map.j', AnsiString(tempDir+'\war3map.j')) = True
then ShowMessage('Success.')
else ShowMessage('Failed.');
このコードを実行すると、アプリケーションがアクセス違反エラーをスローするため、ShowMessage
がまったく表示されません。
上記が問題の原因を推定するのに十分かどうかはわかりませんが、他に何かあれば教えてください.
編集
これは、私が解釈してきた VB.NET ソース コードの抜粋です。
Declare Function MpqExtractFile Lib "MpqLib.dll" Alias "B2" (ByVal hMPQ As Integer, ByVal szToExtract As String, ByVal szExtracted As String) As Boolean
私は明らかに他の言語での宣言に精通していませんが、VB 関数が宣言されたのと同じ VB ファイルで以下の関数を見つけました。
BOOL WINAPI MpqExtractFile(HANDLE hMpq, const char * szToExtract, const char * szExtracted);
よろしくお願いします!