这是我第一次使用windows CreateProcess函数进行并行处理。根据MSDN上的示例,我创建了一个LPTSTR
"(non-const) TCHAR string" command line参数,如下所示
LPTSTR szCmdline[] = _tcsdup(TEXT("\C:\\MyProgram_linux_1.1\\MyProgram.exe") );
LPTSTR和其他char and string types are discussed here
命令行参数传递给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
搜索此错误发现the same error but the solution was specific to using a .NET framework而不是解释error C3861: '_tcsdup'
不确定它是否相关,但error C2059: syntax error : ')'
if (!CreateProcess(NULL, szCmdline, /*...*/) ) cout << "ERROR: cannot start CreateProcess" << endl;
这个错误是如何解决的?而且,这是怎么回事?
另外,我正在使用CreateProcess
as a learning step towards learning the Linux fork()
函数 - 我更容易使用Visual Studio界面,一旦调试并运行,我将更改为g ++界面并更改为fork()
和从那里调试 - 如果可能的话,导致fork()
的解决方案是最有益的。
答案 0 :(得分:5)
添加以下内容:
#include <tchar.h>
答案 1 :(得分:3)
_tcsdup
是一个宏,根据您的Unicode设置映射到实现函数。由于您没有包含头文件(tchar.h),编译器认为它是一个符号并发出错误的代码。
根据实际的定位设置_tcsdump映射到其中一个:
http://msdn.microsoft.com/en-us/library/y471khhc(v=vs.110).aspx