我在Windows 7下使用cygwin和g ++来编译我的项目。我已经制作了一个makefile来编译Ubuntu下的项目。到目前为止,这一切都在发挥作用。
一个函数调用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
?
答案 0 :(得分:0)
我认为你有两种选择。
首先,坚持使用sh
使用的system()
并使用POSIX格式的LibreOffice路径。
C:\..\LibreOffice 3.6\program\soffice
将成为
/cygdrive/c/../LibreOffice 3.6/program/soffice
您也可以使用cygpath
实用程序。
另一种选择是通过cmd调用LibreOffice:
cmd /c C:\..\LibreOffice 3.6\program\soffice args...