使用argv []调用类似main的函数

时间:2010-08-21 08:23:53

标签: c++ zip zlib main

我在这里有一些代码调用minizip(),minizip程序的样板脏块重命名的main(),但是当我编译时,我获得了* 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 个答案:

答案 0 :(得分:2)

所有代码都在同一个文件中吗?如果没有,并且如果调用者是C ++代码并且minizip是C代码,则调用者可能需要minizip块内的extern "C"声明来指示它将调用C函数并且因此需要C联动。

(另外,不要重新输入错误消息。复制并粘贴它们以使它们准确无误。在这种情况下,编译器很可能会报告对minizip(int, char**)的未定义引用。)

答案 1 :(得分:1)

为什么要再次声明函数参数:

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

应该说

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