Вызов основной функции с помощью argv [] - PullRequest
0 голосов
/ 21 августа 2010

У меня есть некоторый код для вызова minizip (), стандартного грязного переименованного main () программы minizip, но когда я компилирую, я получаю * неопределенную ссылку на `minizip (int, char **) *. Вот код.

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[];
{
    ...
}

Ответы [ 2 ]

2 голосов
/ 21 августа 2010

Все ли этот код в одном файле?Если нет, и если вызывающий - это код C ++, а minizip - это код C, вызывающему может потребоваться объявление minizip в блоке extern "C", чтобы указать, что он будет вызывать функцию C и, следовательно, потребуется связь с C.

(Кроме того, не перепечатывайте сообщения об ошибках. Скопируйте и вставьте их так, чтобы они были точными. В этом случае компилятор, скорее всего, сообщил о неопределенной ссылке на minizip(int, char**).)

1 голос
/ 21 августа 2010

Почему вы снова объявляете аргументы функции в:

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

Это должно сказать

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