一段C代码,在code::blocks中运行正常,但在VSCODE中提示C:\Users\ADMINI~1\AppData\Local\Temp\cc3JOmOu.o:test.cpp:(.text+0x93): undefined reference to `gen_Data(void*)'
collect2.exe: error: ld returned 1 exit status
代码如下:
头文件:
//kpid.h
....
typedef struct _Para
{
.....
} Para;
void gen_Data(void *p);
.c文件
//kpid.c
#include "kpid.h"
void gen_Data(void *p)
{
Para *pa = (Para *)p;
......
}
main
//main.c
#include "kpid.h"
int main()
{
Para p;
p.menber1 = 10; //初始化
....
gen_Data(&p)
}
1、这段程序在Code::Blocks17.2 中能正常运行,可输出期望结果
2、将struct定义,gen_Data() 函数定义/实现都放到main.c文件中时(代码不变,仅放的位置移动),在vscode中也能正常运行。
3、但如上代码,定义、实现放在单独的.h,.c文件中,在main.c中包含头文件时,运行错误。提示如下。(函数名的拼写是正确的,没错)
C:\Users\ADMINI~1\AppData\Local\Temp\cc3JOmOu.o:test.cpp:(.text+0x93): undefined reference to `gen_Data(void*)'
collect2.exe: error: ld returned 1 exit status