Suche Hilfe bei DLL-Problem
-
Hallo zusammen,
ich habe eine DLL zum Dekomprimieren von WinZip-Dateien geschrieben. Sie basiert auf XZIP.
Mein Problem ist, dass beim Aufruf der Dekompress-Funktion immer eine Zugriffsverletzung auftritt.Ich hoffe, dass mir hier jemand helfen kann und bin euch für jeden Tipp dankbar!
Der Code der DLL:
#include "XZip.cpp" #include "XUnzip.cpp" #include "dll.h" #include "zip_dll.h" BOOL WINAPI LibMain(HINSTANCE hDllInst, DWORD fdwReason, LPVOID lpvReserved) { switch(fdwReason) { case DLL_PROCESS_ATTACH: break; case DLL_PROCESS_DETACH: break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break; } return(TRUE); } DLLEXPORT HANDLE OpenZipArchive(PSTR sArchiveName,BOOL bCreate) { HANDLE hZip; hZip=OpenZip(sArchiveName,0,ZIP_FILENAME); if(hZip) return(hZip); else if(bCreate) return(CreateZip(sArchiveName,0,ZIP_FILENAME)); else return(NULL); } DLLEXPORT DWORD ZipAddFile(HANDLE hZip,PSTR sFileName) { if(ZipAdd((HZIP)hZip,sFileName,sFileName,0,ZIP_FILENAME)!=ZR_OK) return(NULL); else return(1); } DLLEXPORT DWORD GetZipItemsCount(HANDLE hZip) { ZIPENTRY ze; GetZipItem((HZIP)hZip,-1,&ze); return(ze.index); } DLLEXPORT DWORD UnZipFile(HANDLE hZip,DWORD dwIndex) { ZIPENTRY *ze; ze=(ZIPENTRY*)malloc(sizeof(ZIPENTRY)); if(GetZipItem((HZIP)hZip,dwIndex,&ze)==ZR_OK) { ze->name=(char*)malloc(256); strcpy(ze->name,"text.txt"); if(UnzipItem((HZIP)hZip,dwIndex,"test.zip"/*ze->name*/,0,ZIP_FILENAME)!=ZR_OK) return(NULL); else return(1); } else return(NULL); } DLLEXPORT DWORD CloseArchive(HANDLE hZip) { CloseZip((HZIP)hZip); }
-
hallo,
meist Du diese Zeile:
...
if(GetZipItem((HZIP)hZip,dwIndex,&ze)==ZR_OK)
...ich kenne XZip nicht aber ich kann mir vorstellen, daß es nicht "&ze" sondern nur "ze" heißen muß. "ze" ist ja schon ein Zeiger.
Oder statt
ZIPENTRY *ze;
besser
ZIPENTRY ze;
schreiben und dann aber "&ze" verwenden !mfg