2010-08-21 36 views
0

J'ai un code ici pour appeler minizip(), une plaquette sale rebaptisée main() du programme minizip, mais quand je compile, j'obtiens * une référence non définie à `minizip (int, char **) *. Voici le code.Appel d'une fonction principale à l'aide de argv []

int minizip(int argc, char* argv[]); 

void zipFiles(void) 
{ 
char arg0[] = "BBG"; 
char arg1[] = "-0"; 
char arg2[] = "out.zip"; 
char arg3[] = "server.cs"; 

char* argv[] = {&arg0[0], &arg1[0], &arg2[0], &arg3[0], 0}; 

int argc = (int)(sizeof(argv)/sizeof(argv[0])) - 1; 

minizip(argc, argv); 
} 

int minizip(argc,argv) 
    int argc; 
    char *argv[]; 
{ 
    ... 
} 
+1

0% Taux ACCEPTENCE !!!!!!!!! Bonne chance pour avoir une réponse. –

Répondre

2

Est-ce que tout ce code se trouve dans le même fichier? Sinon, et si l'appelant est en code C++ et minizip est le code C, l'appelant peut avoir besoin de la déclaration minizip dans un bloc extern "C" pour indiquer qu'il appellera une fonction C et aura donc besoin d'une liaison C.

(Aussi, ne retapez messages d'erreur. Copier et les coller afin qu'ils soient exacts. Dans ce cas, le compilateur le plus probable fait état d'une référence non définie à minizip(int, char**).)

+0

Cela l'a réparé, merci. – Jookia

1

Pourquoi vous déclarez la fonction arguments à nouveau dans:

int minizip(argc,argv) 
    int argc; 
    char *argv[]; 
{ 
    ... 
} 

Il devrait dire

int minizip(int argc,char *argv[]) 
    { 
     ... 
    } 
+1

C'est le style hérité "K & R C" (pré-ISO) pour la déclaration des paramètres de fonction. – jamesdlin

+0

Intéressant, ne fonctionne pas sur gcc si – kirbuchi