我有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退出状态
答案 0 :(得分:6)
您的main
个功能需要更改为:
int main() { ... }
getch.cpp
和getch2.cpp
都包含main
个函数。您不能一起使用它们来形成可执行文件。它们必须用于创建单独的可执行文件。
为了使用fun
和getch.cpp
中的getch2.cpp
来构建可执行文件,您需要从void fun(char){...}
移动getch2.cpp
的定义到另一个.cpp
文件。我们称之为func.cpp
。
使用getch.cpp
和func.cpp
构建一个可执行文件。
使用getch2.cpp
和func.cpp
构建其他可执行文件。
更新,以回应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.cpp
和func.cpp
构建可执行文件getch.exe
使用getch2.cpp
和func.cpp
构建可执行文件getch2.exe
。
答案 1 :(得分:0)
您的#include
没问题,问题是您没有在任何地方实施fun
。