无法从C ++程序调用可执行文件

时间:2013-03-06 08:01:54

标签: c++ windows visual-studio-2010 executable system-calls

我在线下载了一个软件包。假设包名为aPackage.zip。解压缩文件夹后,它包含一个可执行文件Cassie.exe,它需要2个输入文件,file1.txt和file2.txt。我只需要双击Cassie.exe,它就会自动开始运行正常。现在我想测量运行Cassie.exe所需的时间,以便在Visual C ++ 2010 express中编写一个新项目(TimeMeasure)的小型c ++程序(main.cpp)。但是,虽然我把Cassie.exe,file1.txt和file2.txt放在同一个文件夹中,但Cassie.exe仍然抱怨它无法打开file2.txt。以下是项目TimeMeasure的main.cpp代码。

#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <stdio.h>      /* printf */
#include <time.h>       /* clock_t, clock, CLOCKS_PER_SEC */
#include <math.h>       /* sqrt */

using namespace std;

int main () {

  const clock_t begin_time = clock();
  system("C:\\aPackage\\Cassie.exe C:\\aPackage\\file1.txt C:\\aPackage\\file2.txt");

  ofstream myfile;
  myfile.open ("Time.txt");
  myfile << "Time used is %d sec \n"<<float( clock () - begin_time ) /  CLOCKS_PER_SEC;
  myfile.close();
  system("PAUSE");
  return 0;
}

TimeMeasure项目是在路径

创建的
C:\Users\Cassie\Documents\Visual Studio 2010\Projects\TimeMeasure

这就是我使用aPackage文件夹的绝对路径的原因。我的电脑是Windows 7家庭操作系统。谁能告诉我我做错了什么?非常感谢,

1 个答案:

答案 0 :(得分:0)

Cassie.exe可能会查找当前目录中的两个文件。双击可执行文件以运行它时,当前目录设置为可执行文件所在的目录,因此它可以工作。当您使用system()时,当前目录保持不变(在本例中是包含TimeMeasure的目录),因此它不起作用。

在致电system之前使用_chdir设置当前目录,或尝试使用

system("cd /d C:\\aPackage && Cassie.exe");

与双击它的效果几乎完全相同。