建立了 win32 console application工程,里面有以下四个.cpp文件。
运行后提示
1.obj : error LNK2001: unresolved external symbol _print_string
1.obj : error LNK2001: unresolved external symbol _delete_string
Debug/li.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
请问是什么原因。
程序本身是没啥问题的。多谢!
file1.c(文件1)
#include”stdio.h”
void main( )
{extern void enter_string(char str[] );
 extern void delete_string(char str[] ,char ch);
 extern void print_string (char str[] );
  /*说明本文件要用到其它文件中的3个函数    */
char c;
static  char str[80];
enter_string(str);
scanf(“%c”,&c);
delete_string(str,c);
print_string(str);
}
file2.c(文件2)
#include ”stdio.h”
void enter_string(char str[80])          /*定义外部函数enter_string */
{
gets (str);
}                              /*向字符数组输入字符串str*/
file3.c(文件3)
#include”stdio.h”
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(文件4)
    #include”stdio.h”
 void print_string(char str[])       /*定义外部函数print_string*/
            {
               printf(“%s”,str);
            }

解决方案 »

  1.   

    在file1.c
    文件的头部
    用#include包含其余的文件
      

  2.   

      既然在file1.c文件头部用#include包含其余文件,那么,声明外部函数就没啥意义了。
    这是课本上的例题,主要要说明extern声明外部函数的用法。  不用#include如何修改使程序运行正确? 谢谢!
      

  3.   

    楼主的没有任何问题,除非是你的字符双引号都写成了中文的双引号的问题。我这边修改你的代码中的字符问题后测试通过了已经,不需要#include。要不要把工程发你?
      

  4.   

    http://www.brsbox.com/filebox/down/fc/78ff81ea63af36c4493634ad53fc11f7
      

  5.   

      非常感谢,我把我的程序和你给我的认真比较了,发现,我的file1文件后缀是.c ,其他文件后缀是.cpp 
    都改成.cpp就没错误了。