当我运行一个创建输出文件并写入内容的C ++程序时,不会创建输出文件,尽管只需在Windows资源管理器中双击它就可以正常运行。
这是我用来运行程序的C#代码:
try
{
Process p = StartProcess(ExecutableFileName);
p.Start();
p.WaitForExit();
Log("Program finished in " + ((p.ExitTime - p.StartTime).Milliseconds / 1000m) + " seconds with code " + p.ExitCode + "\n");
}
catch
{
Log("The program couldn't be started.");
}
更新
我刚刚发现它为什么会发生。
显然,当我使用C#启动它时,C ++程序在相对目录中看不到输入文件,但是当我明确指定它时
ifstream in("C:\\Alex\\primes.in");
它得到它,一切正常!现在我需要使用相对文件路径...
答案 0 :(得分:1)
以下是我们对该问题的讨论摘要。事实证明,输出文件位于C#程序的调试文件夹中,而不是在C ++应用程序所在的目录中,并且输出是预期的。通过指定项目的工作目录属性来解决该问题。
答案 1 :(得分:0)
你必须在这样的过程中调用Close():
try
{
Process p = StartProcess(ExecutableFileName);
p.Start();
p.WaitForExit();
//THIS HERE
p.Close();
Log("Program finished in " + ((p.ExitTime - p.StartTime).Milliseconds /1000m) + " seconds with code " + p.ExitCode + "\n");
}
catch
{
Log("The program couldn't be started.");
}