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

amo*_*ngh 1 c c++ header-files

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

getch.cpp

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

getch2.cpp

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

}
void fun(char x)
{
printf("the ascii value of the char is %d",x);
}
Run Code Online (Sandbox Code Playgroud)

func.h

void fun(char);
Run Code Online (Sandbox Code Playgroud)

当我编译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退出状态

R S*_*ahu 6

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

    int main() { ... }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 这两个getch.cpp和getch2.cpp包含main的功能.您不能一起使用它们来形成可执行文件.它们必须用于创建单独的可执行文件.

  3. 为了让您使用fun从getch.cpp和getch2.cpp建立可执行文件,你需要定义移动void fun(char){...}从getch2.cpp另一个.cpp文件.我们称之为func.cpp.

  4. 使用getch.cpp和func.cpp构建一个可执行文件.

  5. 使用getch2.cpp和func.cpp构建其他可执行文件.

更新,以回应OP的评论

档案func.h:


void fun(char);
Run Code Online (Sandbox Code Playgroud)

档案func.cpp:


void fun(char x)
{
   printf("the ascii value of the char is %d",x);
}
Run Code Online (Sandbox Code Playgroud)

档案getch.cpp:


#include <stdio.h>
#include "func.h"

int main()
{
   char ch='x';
   fun(ch);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

档案getch2.cpp:


#include<stdio.h>
#include "func.h"

int main()
{
   char ch='y';
   fun(ch);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

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