006
25.02.2006, 15:11 Uhr
~Ron
Gast
|
danke bin nen Schritt weiter, bleiben 2 Probleme
1. gzdirect wird nicht aus der dll geladen obwohl laut zlib.h Datei vorhanden ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
2. gzread müsste die entpackte Datei in den buffer schreiben, bei mir durch Zeiger data gekennzeichnet. In data steht aber der Dateiname der zuentpackenden Datei "test.txt" und nicht deren Inhalt: test.gz entpackt zu test.txt.
typedef void *gzFile; typedef void *voidp;
typedef gzFile (__stdcall *gzopen)(const char*, const char*); typedef int (__stdcall *gzread)(gzFile, voidp, unsigned); typedef int (__stdcall *gzdirect)(gzFile);
gzopen MyGzOpen = NULL; gzread MyGzRead = NULL; gzdirect MyGzDirect = NULL;
int __stdcall WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow) {
::HINSTANCE__* dll = ::LoadLibrary ("zlib.dll");
if (dll == NULL) return -1;
MyGzOpen = reinterpret_cast<gzopen>(::GetProcAddress (dll, "gzopen")); MyGzRead = reinterpret_cast<gzread>(::GetProcAddress (dll, "gzread")); MyGzDirect = reinterpret_cast<gzdirect>(::GetProcAddress (dll, "gzdirect"));
/* if (MyGzOpen == NULL | MyGzRead==NULL | MyGzDirect ==NULL) { ::FreeLibrary(dll); return -1; }*/ // gzdirect wird nicht geladen aus der dll
gzFile gp; gp = MyGzOpen("test.gz", "rb"); if(!gp) return false;
uint8 *data; data = (uint8*)malloc(50); // 50 ist nur zum Testen memset(data, 0, 50); if(gp)MyGzRead(gp, data, 50);
::FreeLibrary (dll); |