3

我在 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 的可执行版本使用 no sh

4

1 回答 1

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...
于 2014-02-26T12:43:08.770 回答