我正在使用VS2010,我想调用我在另一个目录中创建的exe文件。 我尝试了以下内容:
int main(){
system("C:\\Users\\Li\\Desktop\\Debug\\modelExample_4pcs.exe");
return 0;
};
但我得到“系统找不到指定的文件”错误。
我试图直接从命令行运行exe文件,它只在我在其目录中时才有效。 你能否告诉我如何从不同的目录运行它?
(我正在使用win7)
谢谢, 李。
答案 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");