最近学多线程,很多问题搞不明白,而且都很初级,希望各位不要笑话,
#define WIN32_LEAN_AND_MEAN
#include <stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
DWORD WINAPI ThreadFunc1(LPVOID);
//DWORD WINAPI ThreadFunc2(LPVOID);
int main(){
HANDLE hThrt1;
HANDLE hThrt2;
DWORD threadID,exitCode1=0,exitCode2=0;
hThrt1=CreateThread(NULL,
0,
ThreadFunc1,
(LPVOID)1,
0,
&threadID);
if(hThrt1){
printf("threadfun1 has been begin\n");
}
hThrt2=CreateThread(NULL,
0,
ThreadFunc1,
(LPVOID)2,
0,
&threadID);
if(hThrt2){
printf("threadfun2 has been begin\n");
}
while(0){
printf("printf any key to exit\n");
getch();
GetExitCodeThread(hThrt1,&exitCode1);
GetExitCodeThread(hThrt2,&exitCode2);
if(exitCode1==STILL_ACTIVE){
puts("threadfun1 still active\n");
}
if(exitCode2==STILL_ACTIVE){
puts("threadfun2 still active\n");
}
if(exitCode1!=STILL_ACTIVE&&exitCode2!=STILL_ACTIVE){
// printf("all has been exit\n");
break;
}
CloseHandle(hThrt1);
CloseHandle(hThrt2);
}
return EXIT_SUCCESS;
}
DWORD WINAPI ThreadFun1(LPVOID n){
Sleep((DWORD)n*1000*2);
return (DWORD)n*10;
}
编译没有错误,可是一运行就这样:
--------------------Configuration: 实验8 - Win32 Debug--------------------
Linking...
实验8.obj : error LNK2001: unresolved external symbol "unsigned long __stdcall ThreadFunc1(void *)" (?ThreadFunc1@@YGKPAX@Z)
Debug/实验8.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
实验8.exe - 2 error(s), 0 warning(s)
为什么啊
----------------解决方案--------------------------------------------------------
程序是你抄来的吧,而且你没有看懂。
这个函数你定义了没:
DWORD WINAPI DWORD WINAPI ThreadFunc1(LPVOID);
----------------解决方案--------------------------------------------------------
DWORD WINAPI ThreadFun1(LPVOID n) --你声明的是 DWORD WINAPI ThreadFunc1(LPVOID);
----------------解决方案--------------------------------------------------------
是我在课件上看到的例子, 刚才又看了一遍,函数名前后不一致,所以有问题,现在好了,不过还要谢谢两位,还有DWORD WINAPI DWORD WINAPI ThreadFunc1(LPVOID);是什么函数,为什么两个DWORD WINAPI
----------------解决方案--------------------------------------------------------
上次没有仔细看,原来你定义但是写DWORD WINAPI ThreadFunc1(LPVOID);时把名字写错了ThreadFunc1写成了ThreadFun1,掉了一个'c',我把两个放一起对比才发现的。
你定义一个新的线程,这个函数就是新线程的入口。
哪里有两个DWORD WINAPI,你看错了吧。
----------------解决方案--------------------------------------------------------
你看看你给我的回复,不是有两个吗
----------------解决方案--------------------------------------------------------
不要意思
可能是ctrl+c和ctrl+v的过程中出的错。
----------------解决方案--------------------------------------------------------