2012-02-24 5 views
1

Я пытаюсь запустить исполняемый файл из программы C++. Я посмотрел и нашел 2 варианта:
system ("C: \ filepath \ file.exe");
и
ShellExecute (GetDesktopWindow(), "open", "C: \ filepath \ file.exe", NULL, NULL, SW_SHOWNORMAL);
Все красиво, за исключением того, что оно не работает.
Для первого варианта мне пришлось включить, кроме windows.h, также cstdlib, иначе мой код не был создан.
Когда я запускаю программу, я получаю ошибку:
«file.exe» не является внутренней или внешней командой
я установить Поддержку среды CLR (/ CLR) вариант для моего проекта (и я также необходимо было установить вариант многопотоковой Debug DLL (/ MDd) для библиотеки времени выполнения, иначе это не будет построено).
Второй вариант не будет построен даже с включенными обеими библиотеками. Я получаю сообщение об ошибке:
ошибка C3861: «ShellExecute»: идентификатор не найден

Я использую VS2010 на Windows7 - и хотел бы, чтобы это работало на многоплатформенности ...
C++ Выполнение внешнего процесса

Могу ли я просить слишком много?
Спасибо.

+0

Если вы хотите, чтобы это было многоплатформенное, вы не можете использовать «ShellExecute» для Windows. Ваша команда 'system' верна; это звучит так, будто вы дали ему неправильный путь. – Borealid

+0

Попробуйте выполнить обратную косую черту в аргументе строки 'system()': 'system (" C: \\ filepath \\ file.exe ");'. Скорее всего, ваш первый фрагмент кода будет работать так, как ожидалось. –

+0

Я убежал от \\, и мой путь правильный – Thalia

ответ

1

Обратите внимание, что я написал в моем вопросе: я настроил общеязыковой Runtime Support (/ clr). Я сделал это из-за предыдущей ошибки.
Как только я удалил эту опцию, я смог запустить исполняемый файл. Возможно, неуправляемый код должен оставаться неуправляемым ...

1

Вы должны заменить обратные слэши двойной обратной косой черты, иначе компилятор интерпретирует их как управляющие последовательности:

system("C:\\filepath\\file.exe"); 

Что касается ShellExecute, вам необходимо включить Shellapi.h, а также Windows.h, и вы не Не нужно устанавливать флаг /clr. ShellExecute является частью Windows API, поэтому он не будет работать на других платформах.

+0

Я избежал \\ – Thalia

+0

@ user1217150 Вы уверены, что ваш файл существует и где вы сказали, что это так? – spencercw

+0

После включения Shellapi.h - Построение просто получилось забавным. После перечисления нескольких ошибок из INSIDE Shellapi.h я даже получил следующее: «фатальная ошибка C1003: количество ошибок превышает 100, прекращение компиляции». Я не думаю, что эта программа меня любит. – Thalia

2

When I run the program, I get the error: "file.exe" is not recognized as an internal or external command

Если пускает приглашение командной строки и введите в file.exe это то, что я получаю:

Microsoft Windows [Version 6.1.7100] 
Copyright (c) 2009 Microsoft Corporation. All rights reserved. 

C:\>file.exe 
'file.exe' is not recognized as an internal or external command, 
operable program or batch file. 

C:\> 
Смежные вопросы