Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

27.06.2011, 14:37

Probleme beim schreiben eines Unzippers

Hey Leute,

irgendwie wirft der Linker mir probleme bei der Aufgabe wo man ein Programm erstellen soll, dass eine Datei aus einem Zip Archiv heraus holt.

Hier mal mein code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
//Unzipper.h

#ifndef UNZIPPER_H
#define UNZIPPER_H


#include 
#include 
#include 
#include 

using namespace std;
class CUnzipper {
public:
    CUnzipper();    //init
    ~CUnzipper();   //alles freigeben
    void UnzipToFile(char *srcZip,char *srcFile, char *pass, char *target);
    void UnzipToFile(char *srcZip,char *srcFile, char *target);

private:
    tbVFile* m_pTbVFile;
    void Unzip(string TargetFilename);
};

#endif

//Unzipper.cpp

#include "Unzipper.h"

//TriBase Initialisieren
//Konstruktor
CUnzipper::CUnzipper() {
    if(!(tbInit()))
    {
        TB_ERROR_MESSAGE("Fehler beim Initialisieren von tbInit");
    }

    //Virtuelle Datei initialisieren
    m_pTbVFile = new tbVFile;
}

//Entpacken mit Passwort
void CUnzipper::UnzipToFile(char *srcZip,char *srcFile, char *pass, char *target)
{   
    string TBUnzipString = (srcFile);
    TBUnzipString += "@";
    TBUnzipString += (*srcZip);
    TBUnzipString += "#";
    TBUnzipString += (*pass);

    char * buffer = new char[TBUnzipString.length()];
    strcpy(buffer,TBUnzipString.c_str());

    if(m_pTbVFile->Init(buffer))
    {
        //Fehler unterlaufen
        TB_ERROR_MESSAGE("Fehler beim erstellen der Virtuellen Datei");
    }
    Unzip(target);
}

//Entpacken ohne Passwort
void CUnzipper::UnzipToFile(char *srcZip,char *srcFile, char *target)
{
    string TBUnzipString = (srcFile);
    TBUnzipString += "@";
    TBUnzipString += (*srcZip);
    
    char * buffer = new char[TBUnzipString.length()];
    strcpy(buffer,TBUnzipString.c_str());

    if(m_pTbVFile->Init(buffer))
    {
        //Fehler unterlaufen
        TB_ERROR_MESSAGE("Fehler beim erstellen der Virtuellen Datei");
    }
    Unzip(target);
}


//Macht die eigentliche Arbeit, 
//Erstellt eine virtuelle Datei mit der TriBase Engine und schreibt diese dann lokal 
//nieder
//=> Entpackt!
void CUnzipper::Unzip(const string TargetFilename)
{
    char * buffer = new char[TargetFilename.length()];
    strcpy(buffer,TargetFilename.c_str());

    m_pTbVFile->SaveToFile(buffer);

}

//TriBase beenden, Destruktor
CUnzipper::~CUnzipper() {
    TB_SAFE_DELETE(m_pTbVFile);
    tbExit();
}


//main.cpp

#include "Unzipper.h"

using namespace std;

int main() {
    
    cout << "Pfad zum zip archiv angeben: ";
    char ZipArchiv[255];
    cin >> (ZipArchiv);
    cout << endl;


    cout << "Welche Datei soll extrahiert werden?";
    char TargetFile[255];
    cin >> (TargetFile);
    cout << endl;

    cout << "Falls es ein Passwort gibt tippe es ein, falls nicht, einfach Enter drücken!";
    char Passwort[255];
    cin >> (Passwort);
    cout << endl;
    
    CUnzipper *Unzipper = new CUnzipper;
    char *TargetFileName = "test.html";
    Unzipper->UnzipToFile(ZipArchiv, TargetFile, Passwort, TargetFileName);

    delete Unzipper;
    Unzipper = NULL;
}


Fehlermeldung:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1>------ Erstellen gestartet: Projekt: TB_Unzipper, Konfiguration: Debug Win32 ------
1>  Unzipper.cpp
1>  Code wird generiert...
1>  Kompilieren...
1>  main.cpp
1>  Code wird generiert...
1>Unzipper.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall tbVFile::tbVFile(void)" (__imp_??0tbVFile@@QAE@XZ)" in Funktion ""public: __thiscall CUnzipper::CUnzipper(void)" (??0CUnzipper@@QAE@XZ)".
1>Unzipper.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) enum tbResult __cdecl tbWriteToLog(char *,...)" (__imp_?tbWriteToLog@@YA?AW4tbResult@@PADZZ)" in Funktion ""public: __thiscall CUnzipper::CUnzipper(void)" (??0CUnzipper@@QAE@XZ)".
1>Unzipper.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) char * __cdecl tbRemoveDir(char *)" (__imp_?tbRemoveDir@@YAPADPAD@Z)" in Funktion ""public: __thiscall CUnzipper::CUnzipper(void)" (??0CUnzipper@@QAE@XZ)".
1>Unzipper.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) enum tbResult __cdecl tbInit(void)" (__imp_?tbInit@@YA?AW4tbResult@@XZ)" in Funktion ""public: __thiscall CUnzipper::CUnzipper(void)" (??0CUnzipper@@QAE@XZ)".
1>Unzipper.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: enum tbResult __thiscall tbVFile::Init(char *)" (__imp_?Init@tbVFile@@QAE?AW4tbResult@@PAD@Z)" in Funktion ""public: void __thiscall CUnzipper::UnzipToFile(char *,char *,char *,char *)" (?UnzipToFile@CUnzipper@@QAEXPAD000@Z)".
1>Unzipper.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: enum tbResult __thiscall tbVFile::SaveToFile(char *)" (__imp_?SaveToFile@tbVFile@@QAE?AW4tbResult@@PAD@Z)" in Funktion ""private: void __thiscall CUnzipper::Unzip(class std::basic_string,class std::allocator >)" (?Unzip@CUnzipper@@AAEXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)".
1>Unzipper.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) enum tbResult __cdecl tbExit(void)" (__imp_?tbExit@@YA?AW4tbResult@@XZ)" in Funktion ""public: __thiscall CUnzipper::~CUnzipper(void)" (??1CUnzipper@@QAE@XZ)".
1>Unzipper.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall tbVFile::~tbVFile(void)" (__imp_??1tbVFile@@QAE@XZ)" in Funktion ""public: void * __thiscall tbVFile::`scalar deleting destructor'(unsigned int)" (??_GtbVFile@@QAEPAXI@Z)".


Wäre super wenn ihr ne idee habt... es schaut so aus als gebe es probleme mit der Virtuellen datei


LG</iostream>

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Akrillo« (27.06.2011, 14:55)


2

27.06.2011, 15:29

Beim Kaffee und Donut ist mir die Lösung selbst eingefallen .... Linker => ... hast du da vielleicht etwas vergessen ?

Ich sag nur Projekteinstellungen, Linker, TriBase.lib :)

So schaun dann die Fehler aus *g

LG