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

Using system() cross platform. Compiling with cygwin and g++

本文关键字:使用 g++ 编译 cygwin 跨平台 system      更新时间:2023-10-16

我在Windows 7下使用cygwin和g++来编译我的项目。我已经制作了一个makefile来编译Ubuntu下的项目。到目前为止,这一切都在起作用。

一个函数调用 Libre Office 来转换一些文件。为此,我将命令字符串传递给system()

症状

当我使用cygwin生成的可执行文件时,会发生错误:

sh: C:..LibreOffice 3.6programsoffice --headless --convert-to png:'draw_png_Export' add1.fodg : command not found

让我恼火的是,命令似乎传递给sh而不是cmd

如何确保适用于 Windows 的可执行版本不使用sh

我认为您有两种选择。

首先,坚持使用system()使用的sh,并使用POSIX格式的LibreOffice路径。

C:..LibreOffice 3.6programsoffice

将成为

/cygdrive/c/../LibreOffice 3.6/program/soffice

您也可以为此使用 cygpath 实用程序。

另一种选择是通过cmd调用LibreOffice:

cmd /c C:..LibreOffice 3.6programsoffice args...