
为什么编程是会出现这个undefined reference to `FunThread@4'怎么解决呢?
1个回答
展开全部
出错原因:在链接时,链接器找不到函数FunThread。
可能是你只对FunThread函数进行了函数声明,没有对函数进行定义;也可能是在声明FunThread函数时没有加extern “C”前缀。
(注:FunThread@4,FunThread是函数名,4代表FunThread函数的参数总长度是4个字节)
例如:
int myFun(int);
int main(void)
{
myFun(12);
return 0;
}
以上源代码能够通过编译并生成目标代码,但是在链接阶段将导致undefined reference to `myFun@4',无法找到函数的定义。
可能是你只对FunThread函数进行了函数声明,没有对函数进行定义;也可能是在声明FunThread函数时没有加extern “C”前缀。
(注:FunThread@4,FunThread是函数名,4代表FunThread函数的参数总长度是4个字节)
例如:
int myFun(int);
int main(void)
{
myFun(12);
return 0;
}
以上源代码能够通过编译并生成目标代码,但是在链接阶段将导致undefined reference to `myFun@4',无法找到函数的定义。
更多追问追答
追问
#include
#include
#define PORT 9400
#define MSGSIZE 1024
DWORD WINAPI FunThread(LPVOID);
int main()
HANDLE hThread = CreateThread(NULL, 0, FunThread, 0, 0, 0);
CloseHandle(hThread);
这是我的部分代码,帮我看看怎么改?HANDLE hThread = CreateThread(NULL, 0, FunThread, 0, 0, 0);中FunThread报错
追答
CreateThread是Windows API函数,CreateThread函数负责创建线程,函数中的参数lpStartAdress(即本题中的FunThread)是线程的入口函数地址,线程创建成功后将执行该函数。
你的代码中没有定义FunThread函数(你只提供了FunThread函数的声明),请定义FunThread函数。
#include
#include
#define PORT 9400
#define MSGSIZE 1024
DWORD WINAPI FunThread(LPVOID);
int main(void)
{
HANDLE hThread = CreateThread(NULL, 0, FunThread, NULL, 0, NULL);
CloseHandle(hThread);
Sleep(1000);
return 0;
}
DWORD WINAPI FunThread(LPVOID lpVoid)
{
printf("Hello,this is a new thread created by you!");
return 0;
}

2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询