使用system()跨平台。用cygwin和g ++编译

时间:2013-09-20 11:39:49

标签: c++ cygwin cross-platform

我在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

1 个答案:

答案 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...