8

这是我第一次,我想使用 windows CreateProcess函数创建一个并行进程。根据 MSDN 上的示例,我创建了一个像这样的LPTSTR“(非常量)TCHAR 字符串” 命令行参数

LPTSTR szCmdline[] = _tcsdup(TEXT("\C:\\MyProgram_linux_1.1\\MyProgram.exe") );

LPTSTR 和其他字符和字符串类型在这里讨论

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'

不确定它是否相关,但也有error C2059: syntax error : ')'一个if (!CreateProcess(NULL, szCmdline, /*...*/) ) cout << "ERROR: cannot start CreateProcess" << endl;

这个错误是如何解决的?而且,这是怎么回事?

此外,我将CreateProcess用作学习 Linux 功能的学习步骤fork()- Visual Studio 界面对我来说更易于使用,一旦调试并工作,我将更改为 g++ 界面并fork()从那里更改并调试 - 所以如果可能,导致 的解决方案fork()是最有益的。

4

2 回答 2

8

添加以下内容:

#include <tchar.h>
于 2013-03-13T18:12:03.737 回答
3

_tcsdup是一个宏,根据您的 Unicode 设置映射到实现函数。由于您没有包含头文件 (tchar.h),编译器认为它是一个符号并发出错误代码。

根据实际定位设置 _tcsdump 映射到其中之一:

  • _strdup
  • _mbsdup
  • _wcsdup

http://msdn.microsoft.com/en-us/library/y471khhc(v=vs.110).aspx

于 2013-03-13T18:45:35.117 回答