永发信息网

求改正 关于c语言创建进程时的参数传递问题

答案:2  悬赏:0  手机版
解决时间 2021-01-29 17:13
  • 提问者网友:棒棒糖
  • 2021-01-29 10:01
// 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)
最佳答案
  • 五星知识达人网友:独行浪子会拥风
  • 2021-01-29 10:13
ThreadName1的声明和实现的参数表不同,而C++支持函数重载,就把你声明的函数和实现的函数当成了两个不同的函数,这样一来你用到的函数实际上没有定义,于是链接出错
全部回答
  • 1楼网友:低血压的长颈鹿
  • 2021-01-29 11:27
楼主说的不太清楚啊。。。 不管怎么说,把形参 a[] 改成 *a 完全可以。数组名本身就是指向数组第一个元素的指针,所以传数组名a就是传首地址
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯