【发布时间】:2012-02-24 23:10:13
【问题描述】:
我正在尝试从 c++ 程序运行可执行文件。我查看并找到了 2 个选项:
system("C:\filepath\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 - 并且希望它能够在多平台上运行...
我要求太多了吗?
谢谢。
【问题讨论】:
-
如果你希望它是多平台的,你不能使用 Windows 特定的
ShellExecute。您的system命令是正确的;听起来你给了它一个不正确的路径。 -
尝试将字符串参数中的反斜杠转义为
system():system("C:\\filepath\\file.exe");。您的第一个代码 sn-p 很有可能会按预期工作。 -
我确实逃脱了\\,我的路径是正确的
-
嗯,没有。 Hans Passant 在编辑您的问题时避开了您的反斜杠。尝试@FrédéricHamidi 和 Hans 建议的代码,如果路径正确,它将起作用。
-
当我最初发布时 - 只有两行 TEXT。我的实际路径不在文件路径目录中,并且我的可执行文件未命名为文件。从一开始我的代码中就有双反斜杠......我希望解决方案如此简单。