从C#调用C ++程序时出现问题

时间:2011-09-23 17:23:00

标签: c#

我有一个C ++程序(Test.exe),它接收一个数字 N (作为命令行参数传递)并生成写入文本的 N 矩形的坐标文件。

我已经通过命令行和Visual Studio对此进行了测试,并且在两种情况下都使用预期的输出写入文件。

在C#程序中,我在文本框中输入 N ,单击一个按钮,我的事件代码如下:

Process p = new Process();
p.StartInfo.FileName = "Test.exe";
p.StartInfo.Arguments = num;
p.Start();
// read the file that Test.exe created

Test.exe不会写入文件。

有关为什么Test.exe从C#程序调用时不写文件的任何建议?

发现问题 该文件正在从C ++程序所在的NOT执行C#程序的目录中编写。

2 个答案:

答案 0 :(得分:2)

我猜您在p.WaitForExit()行之后忘了p.Start()

答案 1 :(得分:2)

两点:

  1. 确保Test.exeStartInfo.WorkingDirectory)的工作目录设置为进程具有写访问权限的目录,并且
  2. 如果Test.exe需要流程提升,请使用StartInfo.UseShellExecute = trueStartInfo.Verb = "runas"启动提升流程。您的C#程序需要升级才能执行此操作,您可以使用应用程序清单文件。