// ThreadCreate.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "ThreadCreate.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// The one and only application object
CWinApp theApp;
using namespace std;
void ThreadName1();
static HANDLE hHandle1=NULL;
DWORD dwThreadID1;
typedef struct p
{
int i;
int j;
}node;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
node a;
a.i=1;
a.j=2;
hHandle1=CreateThread((LPSECURITY_ATTRIBUTES)NULL,0,(LPTHREAD_START_ROUTINE)ThreadName1,(LPVOID)&a,0,&dwThreadID1);
Sleep(5000);
CloseHandle(hHandle1);
ExitThread(0);
return nRetCode;
}
void ThreadName1(node a)
{ printf("%d\n",a.i+a.j);
printf("Thread is Running!\n");
}
创建进程的时候系统给的函数好像只能传递一个函数
我只是想在创建进程的时候传递两个参数给函数,百度了下有人告诉我可以创建一个结构体然后整个作为参数插入
我照做了。。。。
现在的问题是编译通过 运行出错。。。。
--------------------Configuration: ThreadCreate - Win32 Debug--------------------
Linking...
ThreadCreate.obj : error LNK2001: unresolved external symbol "void __cdecl ThreadName1(void)" (?ThreadName1@@YAXXZ)
Debug/ThreadCreate.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
ThreadCreate.exe - 2 error(s), 0 warning(s)
求改正 关于c语言创建进程时的参数传递问题
答案:2 悬赏:0 手机版
解决时间 2021-01-29 17:13
- 提问者网友:棒棒糖
- 2021-01-29 10:01
最佳答案
- 五星知识达人网友:独行浪子会拥风
- 2021-01-29 10:13
ThreadName1的声明和实现的参数表不同,而C++支持函数重载,就把你声明的函数和实现的函数当成了两个不同的函数,这样一来你用到的函数实际上没有定义,于是链接出错
全部回答
- 1楼网友:低血压的长颈鹿
- 2021-01-29 11:27
楼主说的不太清楚啊。。。
不管怎么说,把形参 a[] 改成 *a 完全可以。数组名本身就是指向数组第一个元素的指针,所以传数组名a就是传首地址
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯