【发布时间】:2012-01-28 18:29:49
【问题描述】:
背景信息: Windows 7、Visual C++ 2010 Express
问题: CreateProcess() 不断返回“无效的命令行参数”
说明:我正在编写一段代码,它使用 Windows API 的 CreateProcess 调用外部程序。到目前为止,我接到了与一个外部程序合作的电话:
if( !CreateProcess( "C:\\Temp\\convert.exe",
t_str, // Arguments
...
}
//where t_str is " C:\\img1.jpeg C:\\img1.pgm" (ImageMagick if you're wondering).
即使我为将所有内容推送到 Windows 字符串和指针中所做的大量数据处理,这也能完美运行。所以我复制了 CreateProcess() 的所有修改,以便再次调用另一个外部程序:
if( !CreateProcess( "C:\\Temp\\sift.exe",
t_str2, // Arguments
...
}
//where t_str2 is ` < C:\\img1.pgm > C:\\img1.key`
基本上,一些非常相似的东西,但是所有变量名都改变了(因为我有这两个调用串行运行)。这就是问题所在;这不会运行,而是打印出“无效的命令行参数:
我将 t_str2 切换到其他稍微不那么复杂的东西(因为我知道 sift.exe 是如何工作的)并且我得到了相同的结果。当我只运行筛选而不转换时,也会发生同样的事情。
问题:什么可能导致这个问题?我能做些什么来进一步调试这个问题?关于我正在使用的方法的替代方案有什么建议吗?任何帮助表示赞赏。我可以提供更多代码,但它非常简单,不会有什么问题。
【问题讨论】:
-
想一想:如果你运行命令
cmd.exe和参数/c c:\temp\sift.exe < c:\img1.pmg > c:\img1.key会怎样?
标签: c++ windows command-line-arguments createprocess