Это мой первый раз, и я хотел бы сделать параллельный процесс, используя окна 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()
, по возможности, является наиболее выгодным.
Добавьте следующее:
#include <tchar.h>
_tcsdup
это макрос, который отображается на функцию реализации в зависимости от ваших настроек Unicode. Поскольку вы не включили заголовочный файл (tchar.h), компилятор считает его символом и выдает неверный код.
В зависимости от фактических настроек locate _tcsdump сопоставляется с одним из них:
http://msdn.microsoft.com/en-us/library/y471khhc(v=vs.110).aspx