9

我有几个使用 GNU 工具链(automake、conf、flex、bison、gcc,...)在 Linux 和 OSX 上开发的 C 自由软件/开源库,但我偶尔会收到提供 Windows DLL 的请求。我希望能够提供这些,而无需花费大量时间和金钱进行 Windows Visual Studio 开发。我确实有一个可用的 Windows XP 虚拟机,而且我也知道该软件是可移植的,因为偶尔我会获得补丁以使其内置在 Windows 上。

我应该使用什么方法或工具?在 Linux 上交叉编译?使用 Visual Studio Express 或其他东西?我更喜欢从 SVN 存储库完全自动化的东西。我不认为 cygwin 是一种解决方案,因为据我了解这些问题 - 链接和 DLL,它似乎不能提供 Windows 开发人员需要的东西。

4

4 回答 4

5

您可以尝试使用 MSYS 的 Mingw、使用 SUA(unix 应用程序的子系统)或 Cygwin 的 Visual Studio (Express) 来编译基于 automake/autoconf 的程序(./configure && make 在 linux 下构建)。

不幸的是,他们创建的 lib 文件通常与其他编译器不兼容,因此如果您希望您的库与使用 Visual Studio 开发的应用程序一起使用,那么您应该使用 VSC++ 方法。通常很多 GNU 项目(检查gnuwin32)实际上也有 VC 兼容的构建脚本,而不是可以使用“nmake”编译

于 2009-06-12T17:15:50.043 回答
2

您可以使用MinGW或从Visual Studio Express安装 MSVC 命令行工具。

其中任何一个都可以由命令行脚本驱动。

我想从 Linux 进行交叉编译也可以,但我不知道这可能是多么容易(或痛苦)。

这篇简短的文章展示了一个 Windows 应用程序的简单交叉编译并在 Wine 下运行该应用程序:

于 2009-06-12T17:04:06.887 回答
1

Windows 软件开发工具包包括 Microsoft 的 C/C++ 编译器(仅命令行,没有可视化工具),因此您甚至不需要 Visual C++ Express Edition。Windows SDK 可从 Microsoft 免费下载。

于 2009-06-12T17:20:18.753 回答
1

如果您使用http://www.cmake.org/,cmake 可以创建 Makefile(适用于 Unix)和项目文件(适用于 Visual Studio)。例如,这就是 KDE 项目正在使用的。

Visual Studio 的编译器可以从 Windows 命令行启动,在 cmake 生成的文件上使用“devenv /build debug project.csproj”。但是,这确实需要安装了(可能免费的)Visual Studio 的 Windows(可能在 VM 中)。

于 2009-06-12T17:28:37.110 回答