我在这里有一些代码调用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[];
{
...
}
答案 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[])
{
...
}