我正在使用Windows 7下的cygwin和g++编译我的项目。我已经制作了一个makefile来在Ubuntu下编译该项目。目前一切都正常工作。
一个函数调用Libre Office来转换一些文件。为此,我将一个命令字符串传递给
一个函数调用Libre Office来转换一些文件。为此,我将一个命令字符串传递给
system()
。
症状
当我使用cygwin生成的可执行文件时,会出现错误:sh: C:\..\LibreOffice 3.6\program\soffice --headless --convert-to png:'draw_png_Export' add1.fodg : command not found
让我感到烦恼的是,似乎命令是传递给了 sh
而不是 cmd
我该怎么做才能确保为 Windows 构建的可执行文件不使用 sh
呢?
system()
将调用sh
。如果你想调用cmd
,请在命令行中包含它。你可能还想使用cygpath在Cygwin和Windows路径之间进行转换。 - syamsh
,因为它是*nix系统下的shell解释器(Cygwin模拟的),就像cmd
是Windows下的一样。但是你可以让sh
调用类似于cmd "C:\...\program"
这样的东西(你可能需要向cmd
传递其他选项,请参阅其文档)。 - syam