0

我这里有一些代码可以调用 minizip(),这是 minizip 程序的一个脏重命名的样板 main(),但是当我编译时,我得到 *undefined reference to `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[];
{
    ...
}
4

2 回答 2

2

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

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

于 2010-08-21T08:33:44.417 回答
1

为什么要在以下位置再次声明函数参数:

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

应该说

int minizip(int argc,char *argv[])
    {
        ...
    }
于 2010-08-21T08:38:03.057 回答