从c ++(windows)中调用exe

时间:2010-08-30 17:14:09

标签: c++ windows-7

我正在使用VS2010,我想调用我在另一个目录中创建的exe文件。 我尝试了以下内容:

int main(){

 system("C:\\Users\\Li\\Desktop\\Debug\\modelExample_4pcs.exe");     
     return 0;
};

但我得到“系统找不到指定的文件”错误。

我试图直接从命令行运行exe文件,它只在我在其目录中时才有效。 你能否告诉我如何从不同的目录运行它?

(我正在使用win7)

谢谢, 李。

9 个答案:

答案 0 :(得分:5)

您应该尝试使用CreateProcess Windows API功能:http://msdn.microsoft.com/en-us/library/ms682425%28VS.85%29.aspx

答案 1 :(得分:3)

尝试打开文件进行阅读,只是为了检查路径是否正确:

char* filename = "C:\\Users\\Li\\Desktop\\Debug\\modelExample_4pcs.exe" ;
FILE* fp = fopen (filename, "rb") ; // Open for reading, binayr mode
if (fp == 0) {
  printf ("Duh! File not found\n") ;
  exit (0) ;
  }
printf ("File found\n") ;
fclose (fp) ;

// Now try the system call, as before:
system(filename);

会发生什么?

答案 2 :(得分:2)

您应该能够像这样使用ShellExecute :(根据您的情况调整发送到ShellExecute的参数)http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx?ppud=4

HINSTANCE hinst = ShellExecute( NULL, _T("open"), commandLine.c_str(), additionalParams.c_str(), NULL, SW_RESTORE );

if(hinst <= (HINSTANCE)SHELLEXERROR)// see: http://msdn2.microsoft.com/en-us/library/bb762153.aspx for further info on the return values

现在假设你正在使用Win7,你可能有一个特权问题,你需要在一个高级别(即管理员)运行你可以通过打开cmd作为管理员并从另一个目录运行你的exe来测试这个

正如史蒂夫上面提到的,你当然可以使用CreateProcess。

HTH,

EB

答案 3 :(得分:1)

System()可能无法找到cmd.exe来打开您的环境。 尝试使用cmd.exe通过/ C选项执行您的应用程序。

System("C:\\WINDOWS\\system32\cmd.exe /C \"C:\\Users\\Li\\Desktop\\Debug\\modelExample_4pcs.exe\"");

答案 4 :(得分:1)

使用CreateProcess尝试此操作。比使用system()更少(或至少不同)环境依赖性。如果仍然失败,至少你会得到一个不错的Win32错误代码。

http://msdn.microsoft.com/en-us/library/ms682425(VS.85).aspx

答案 5 :(得分:0)

检查您的路径,并确保您转义所有字符:C:\\Users\Li..

答案 6 :(得分:0)

运行主程序时出错,而不是启动modelExample_4pcs.exe吗?尝试注释掉system()调用,看看是否收到同样的错误。

当你在文件夹外面时,你的主程序不在路径上......

答案 7 :(得分:0)

modelExample_4pcs.exe是否尝试从当前工作文件夹加载另一个文件,那是什么导致错误?

也许在调用system()之前尝试chdir()。

答案 8 :(得分:0)

首先更改目录,就像从命令提示符那样:

system("C: && CD \\Users\\Li\\Desktop\\Debug\\ && modelExample_4pcs.exe");