我正在为 Windows 编写一个程序,该程序最终必须启动位于同一台计算机上的不同的预先存在的 .exe。它将多个参数传递给这个 .exe 文件。我正在阅读实际的命令和参数并构建命令,但我也尝试用相同的结果对其进行硬编码。这是硬编码版本(我从一个使用same.exe的旧C程序中挑选出来):
system("c://IQapture//dmon2_6_IHD -p2 c://IQapture//mon_table_101_Tx8.txt 11 0 0");
所以在原程序里面int _cdecl main(int argc, char**argv)
这种系统的使用是有效的。在我的 C++ 类方法中的 C++ 程序中,当我发出命令时,正确的程序会启动,但它会立即弹出一个错误对话框,指出发生了错误。我将用于启动 exe 的系统字符串回显到控制台。在它失败后,我复制并粘贴了与 echo'd 相同的行,这次 exe 运行没有错误。这是可重复的。如果与时间有关,我尝试在发出系统命令之前添加 10 秒延迟,但这没关系。加上原来的旧程序不需要延迟。这对我来说意味着字符串是正确的并且目标程序可以工作。不知何故,system() 调用与直接命令行调用不同。该程序编译并构建良好。我正在使用 Visual Studio 2010。
有没有人知道如何使 system() 调用像命令行调用一样工作?