这是我第一次,我想使用windows CreateProcess函数创建一个并行进程。根据MSDN的示例,我创建了一个LPTSTR
"(非const) TCHAR字符串"命令行参数,如下所示
LPTSTR szCmdline[] = _tcsdup(TEXT("C:\MyProgram_linux_1.1\MyProgram.exe") );
此处讨论LPTSTR和其他char和string类型
命令行参数像这样传递给CreateProcess
if (!CreateProcess(NULL, szCmdline, /*...*/) ) cout << "ERROR: cannot start CreateProcess" << endl;
这些标头是
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <strsafe.h>
#include <direct.h>
编译错误:
error C3861: '_tcsdup': identifier not found
搜索此错误发现相同的错误,但解决方案是特定于使用。net框架,而不是解释error C3861: '_tcsdup'
不确定是否相关,但if (!CreateProcess(NULL, szCmdline, /*...*/) ) cout << "ERROR: cannot start CreateProcess" << endl;
上也有error C2059: syntax error : ')'
这个错误是如何修复的?这是怎么回事?
此外,我正在使用CreateProcess
作为学习Linux fork()
函数的学习步骤- Visual Studio接口对我来说更容易使用,一旦调试并工作,我将更改为g++接口并更改为fork()
并从那里进行调试-因此,如果可能的话,导致fork()
的解决方案是最有益的。
添加如下include:
#include <tchar.h>
_tcsdup
是一个宏,根据Unicode设置映射到实现函数。由于没有包含头文件(tchar.h),编译器认为它是一个符号,并发出错误的代码。
根据实际的定位设置_tcsdump映射到其中之一:
- _strdup
- _mbsdup
- _wcsdup
http://msdn.microsoft.com/en-us/library/y471khhc (v = vs.110) . aspx