如何从外部文件调用C ++函数?

时间:2015-04-21 03:24:58

标签: c++ c header-files

我有3个C ++源文件,我需要将一个函数从一个文件调用到另一个文件

getch.cpp

#include<stdio.h>
#include "getch2.h"
main()
{
 char ch='x';
 fun(ch);   
}

getch2.cpp

#include<stdio.h>
void fun(char);
main()
{

}
void fun(char x)
{
printf("the ascii value of the char is %d",x);
}

func.h

void fun(char);

当我编译getch2.cpp时,我得到错误

C:\ Users \ amolsi \ AppData \ Local \ Temp \ cc1k7Vdp.o getch.cpp :(。text + 0x18):未定义引用`fun(char)'

C:\ Users \ amolsi \ Documents \ C files \ collect2.exe [错误] ld返回1退出状态

2 个答案:

答案 0 :(得分:6)

  1. 您的main个功能需要更改为:

    int main() { ... }
    
  2. getch.cppgetch2.cpp都包含main个函数。您不能一起使用它们来形成可执行文件。它们必须用于创建单独的可执行文件。

  3. 为了使用fungetch.cpp中的getch2.cpp来构建可执行文件,您需要从void fun(char){...}移动getch2.cpp的定义到另一个.cpp文件。我们称之为func.cpp

  4. 使用getch.cppfunc.cpp构建一个可执行文件。

  5. 使用getch2.cppfunc.cpp构建其他可执行文件。

  6. 更新,以回应OP的评论

    档案func.h


    void fun(char);
    

    档案func.cpp


    void fun(char x)
    {
       printf("the ascii value of the char is %d",x);
    }
    

    档案getch.cpp


    #include <stdio.h>
    #include "func.h"
    
    int main()
    {
       char ch='x';
       fun(ch);
       return 0;
    }
    

    档案getch2.cpp


    #include<stdio.h>
    #include "func.h"
    
    int main()
    {
       char ch='y';
       fun(ch);
       return 0;
    }
    

    使用getch.cppfunc.cpp构建可执行文件getch.exe 使用getch2.cppfunc.cpp构建可执行文件getch2.exe

答案 1 :(得分:0)

您的#include没问题,问题是您没有在任何地方实施fun