一个简单的多文件C程序 我们总是出现error LNK2001: unresolved external symbol
程序是这样的:file1.c#include<stdio.h>intmain(){//对函数的声明externvoidenter_string(charstr[]);ex...
程序是这样的:
file1.c
#include<stdio.h>
int main()
{
//对函数的声明
extern void enter_string(char str[]);
extern void delete_string(char str[]);
extern void print_string(char str[]);
//以下3行声明在本函数中将要调用的是已在其他文件中定义的3个函数
char c,str[80];
enter_string(str);
scanf("%c",&c);
delete_string(str,c);
print_string(str);
return 0;
}
file2.c
void enter_string(char str[80]) //定义外部函数enter_string
{
gets(str); //向字符数组输入字符串
}
file3.c
void delete_string(char str[],char ch) //定义外部函数delete_string
{
int i,j;
for(i=j=0;str[i]!='\0';i++)
if(str[i]!=ch);
str[j++]=str[i];
str[j]='\0';
}
file4.c
void print_string(char str[]) //定义外部函数print_string
{
printf("%s\n",str);
}
出现的错误是:
Linking...
file1.obj : error LNK2001: unresolved external symbol _print_string
file1.obj : error LNK2001: unresolved external symbol _delete_string
file1.obj : error LNK2001: unresolved external symbol _enter_string
Debug/file1.exe : fatal error LNK1120: 3 unresolved externals
执行 link.exe 时出错.
file1.exe - 1 error(s), 0 warning(s)
应该怎么办 展开
file1.c
#include<stdio.h>
int main()
{
//对函数的声明
extern void enter_string(char str[]);
extern void delete_string(char str[]);
extern void print_string(char str[]);
//以下3行声明在本函数中将要调用的是已在其他文件中定义的3个函数
char c,str[80];
enter_string(str);
scanf("%c",&c);
delete_string(str,c);
print_string(str);
return 0;
}
file2.c
void enter_string(char str[80]) //定义外部函数enter_string
{
gets(str); //向字符数组输入字符串
}
file3.c
void delete_string(char str[],char ch) //定义外部函数delete_string
{
int i,j;
for(i=j=0;str[i]!='\0';i++)
if(str[i]!=ch);
str[j++]=str[i];
str[j]='\0';
}
file4.c
void print_string(char str[]) //定义外部函数print_string
{
printf("%s\n",str);
}
出现的错误是:
Linking...
file1.obj : error LNK2001: unresolved external symbol _print_string
file1.obj : error LNK2001: unresolved external symbol _delete_string
file1.obj : error LNK2001: unresolved external symbol _enter_string
Debug/file1.exe : fatal error LNK1120: 3 unresolved externals
执行 link.exe 时出错.
file1.exe - 1 error(s), 0 warning(s)
应该怎么办 展开
展开全部
没什么问题啊,很好啊。就几个小问题,编译通过了啊。
一个文件:
#include<stdio.h>
int main()
{
extern void enter_string(char str[]);
extern void delete_string(char str[],char); //这个函数是有2个参数的
extern void print_string(char str[]);
char c,str[80];
enter_string(str);
scanf("%c",&c);
delete_string(str,c);
print_string(str);
return 0;
}
第二个文件:
#include <stdio.h> //需要加上头文件
void enter_string(char str[80])
{
gets(str);
}
void delete_string(char str[],char ch)
{
int i,j;
for(i=j=0;str[i]!='\0';i++)
if(str[i]!=ch) //多了一个分号
str[j++]=str[i];
str[j]='\0';
}
void print_string(char str[])
{
printf("%s\n",str);
}
下面是截图:
依我的经验来看,你出现这个问题,有可能是没有将几个文件放在同一个工程里面。
你看看我的,我是把2个源文件放在同一个工程里面,所以没有出问题。
追问
4个都加进去了
现在出现了
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/file4.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询