【问题标题】:A Compiled .exe can't find input file编译的 .exe 找不到输入文件
【发布时间】:2017-12-06 00:39:27
【问题描述】:

我有一个编译成 .exe 的 c 代码,双击它可以在不同的位置成功执行 .exe。

我正在尝试使用 SAS 来执行 .exe。有错误消息说找不到输入文件,因此无法正确执行 .exe。

我使用 Visual Studio 编译 c 代码。我猜它与代码的编译方式有关(例如所有源文件和头文件的默认目录,以及文件保存的输入)?

谁能给我一些关于调试和解决问题的想法?

用于调用 .exe 的 SAS 代码粘贴在下面,错误消息也是如此。

    x '"C:\Users\Gfish\Documents\Visual Studio 2010\Projects\M\Debug\M.exe"';

error image 非常感谢!!

使用 infile 和 pipe 再次调用 .exe 后,SAS 中的错误消息也被附加(即 error2)enter image description here

【问题讨论】:

  • 请发布使用的 SAS 代码和收到的错误。正如发布的那样,这个问题不符合 SO 规则。
  • 请通过鼠标悬停阅读每个标签的要求和相关性,请勿将文字发布为图片。
  • ... 并且错误信息不是说“找不到输入文件”,而是“没有打开文件”。
  • 如果您通过命令行运行该确切代码会发生什么。另外,请尝试使用 %sysexec 而不是 X。当您有带空格的路径时,我发现该方法更易于使用。

标签: c visual-studio compilation sas


【解决方案1】:

对于在 SAS 中调试操作系统命令,我总是喜欢使用 infilepipe - 这样您可以提取任何错误/调试消息并将它们用于条件逻辑。

试试:

data _null_;
 infile '"C:\Users\Gfish\Documents\Visual Studio 2010\Projects\M\Debug\M.exe" 2>&1' pipe;
 input;
 list;
run;

注意2>&1 - 这会将 STDERR 重定向到 STDOUT(因此您可以在流中同时获得两者)。

另外 - 正如@Reeza 提到的 - 尝试首先在常规命令行上运行它。如果它在那里不起作用,那么它在 SAS 中也不起作用。

【讨论】:

  • 感谢您的建议。我尝试在 cmd 中调用 .exe 并且它可以工作,但是使用上述管道和 infile 在 SAS 中出现错误(请参阅原始帖子)。
猜你喜欢
  • 1970-01-01
  • 2023-02-21
  • 1970-01-01
  • 1970-01-01
  • 2011-09-11
  • 1970-01-01
  • 2012-01-26
  • 1970-01-01
  • 2015-08-21
相关资源
最近更新 更多