C ++执行外部进程

时间:2012-02-24 23:10:13

标签: c++ process

我正在尝试从c ++程序运行可执行文件。我看了,找到了2个选项:
系统( “C:\文件路径\的file.exe”);

ShellExecute(GetDesktopWindow(),“open”,“C:\ filepath \ file.exe”,NULL,NULL,SW_SHOWNORMAL);
一切都很美好,除非它不起作用。
对于第一个选项,除了windows.h之外,我还必须包括cstdlib,否则我的代码不会构建。
当我运行程序时,我收到错误:
“file.exe”未被识别为内部或外部命令
我已经为我的项目设置了公共语言运行时支持(/ clr)选项(我还必须为运行时库设置选项多线程调试DLL(/ MDd),否则它将不再构建)。<登记/> 即使包含两个库,第二个选项也不会构建。我收到错误:
错误C3861:'ShellExecute':找不到标识符

我在Windows7上使用VS2010 - 并且希望这可以在多平台上使用...

我问得太多了吗?
谢谢。

3 个答案:

答案 0 :(得分:2)

  

当我运行程序时,我收到错误:   “file.exe”无法识别为内部或外部命令

如果我启动命令行提示并输入 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:\>

答案 1 :(得分:1)

您需要用双反斜杠替换反斜杠,否则编译器会将它们解释为转义序列:

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

关于ShellExecute,您需要包含Shellapi.h以及Windows.h,并且不需要设置/clr标志。 ShellExecute是Windows API的一部分,因此无法在其他平台上运行。

答案 2 :(得分:1)

请注意,我在我的问题中写道:我已经设置了公共语言运行时支持(/ clr)选项。我这样做是因为之前的错误提示它。
一旦我删除了该选项,我就能运行可执行文件。也许非托管代码必须保持不受管理......