ошибка C3861: ‘_tcsdup’: идентификатор не найден

Это мой первый раз, и я хотел бы сделать параллельный процесс, используя окна CreateProcess функция. На основе примера в MSDN я создал LPTSTR «(неконстантная) строка TCHAR» командная строка такой аргумент

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

ЛПЦТР и др. типы 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 Framework вместо того, чтобы объяснять 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(), по возможности, является наиболее выгодным.

5

Решение

Добавьте следующее:

#include <tchar.h>
5

Другие решения

_tcsdup это макрос, который отображается на функцию реализации в зависимости от ваших настроек Unicode. Поскольку вы не включили заголовочный файл (tchar.h), компилятор считает его символом и выдает неверный код.

В зависимости от фактических настроек locate _tcsdump сопоставляется с одним из них:

  • _strdup
  • _mbsdup
  • _wcsdup

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

3

По вопросам рекламы [email protected]