2010-08-30 95 views
3

我使用VS2010,我想打电话给我已经在另一个目录中创建一个exe文件。 我已经试过如下:调用从C++(窗口)的EXE

int main(){ 

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

却出现“系统找不到指定的文件”的错误。

我试图直接在命令行中运行exe文件,当我的目录里面才有效。 你能告诉我如何从一个不同的目录运行它吗?

(我使用WIN7)

感谢, 力。

+4

尝试'SetCurrentDirectoryA( “C:\\ \\用户\\李桌面\\调试”)'之后一个'system(“modelExample_4pcs.exe”)''。请注意,'system'函数取决于实现/ – dirkgently 2010-08-30 17:38:52

+0

如果您已经从命令行尝试过,并且它似乎只在您处于目录中时才起作用,表明您使用的是不正确的绝对路径或相对路径。 – 2010-08-30 18:03:45

回答

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); 

会发生什么?

0

检查你的路径,并确保你逃避的所有字符:C:\\Users\Li..

+0

我的路径没问题。我已经按照原样复制了它,并从cmd提示符将其复制到CD-ROM中。我只是不能运行exe – user429400 2010-08-30 17:18:58

0

是运行主程序,而不是发动modelExample_4pcs.exe错误?尝试注释掉system()调用,看看你是否得到相同的错误。

你的主要程序是不是路径上,当你的文件夹外...

+0

错误来自我的主程序。 我只是想从一个程序里面调用一个程序......有没有另外一种方法来做到这一点? – user429400 2010-08-30 17:26:16

1

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

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

-1,记录了缺少CMD.EXE的失败模式。引用MS,“如果找不到命令解释器,则返回0并将'errno'设置为'ENOENT'。”报告的错误,''系统找不到指定的文件''是不同的。 – MSalters 2010-08-31 07:54:06

2

您应该能够使用的ShellExecute像这样:(调整发送到ShellExecute的适合自己情况的PARAMS)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

0

是modelExample_4pcs.exe试图加载从当前工作文件夹中的另一个文件,这是什么产生了错误?

调用系统之前,也许尝试的chdir()()。

0

只需更改到该目录第一,就像您在命令提示符下执行:

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