错误C3861:'_ tcsdup':找不到标识符

时间:2013-03-13 18:11:12

标签: c++ visual-studio-2008 fork createprocess lptstr

这是我第一次使用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()的解决方案是最有益的。

2 个答案:

答案 0 :(得分:5)

添加以下内容:

#include <tchar.h>

答案 1 :(得分:3)

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

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

  • _strdup
  • _mbsdup
  • _wcsdup

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