我有一个在Linux上编写的C程序,运行得非常好。现在我想在Windows上运行它。
如何简单地在Windows上运行它?
Cygwin是模拟一个(几乎)完整的POSIX执行环境在本地Windows进程中。它足够完整,以至于惊人的数量的Unix应用程序代码只需使用熟悉的 ./configure && make && make install
命令编译并运行。这个技巧是通过提供一个DLL来完成的,该DLL使用Windows API模拟POSIX系统调用。基于此,您可以获得完整的GCC工具链、bash和所有常用的命令行实用程序。其中一个缺点是编译后的程序依赖于Cygwin DLL,这使得将结果交付给没有安装Cygwin且用户不想使用Unix shell的系统变得棘手。
MinGW是GCC工具链的移植版,它生成依赖于众所周知的(并随Windows本身分发的)MSVCRT.DLL C运行时库的本机Windows应用程序。它不尝试模拟POSIX操作系统,但是大多数基于标准C库的应用程序通常都可以无需更改即可构建。
MSYS是一个编译时环境,提供足够的Unix实用程序(包括bash),通常可以允许./configure
运行,并且如果项目支持结果,则使用MinGW的GCC完成构建。结果是本地Windows可执行文件,除了MSVCRT.DLL之外,不依赖于您没有刻意使用的任何DLL。尽管MSYS环境本身是Cygwin项目早期版本的分支,但它主要用于提供类Unix的编译本机Windows应用程序的地方:一般不会基于其运行时环境构建新应用程序。
另一种编译Windows的方法是在Linux上使用MinGW交叉编译器。许多MinGW的核心开发人员都采用这种方式,在Wine下进行测试,或在运行在VM或独立PC上的Windows下进行测试。
如果程序有GUI组件,则可能会遇到其他困难。一些GUI框架适用于Linux和Windows。Qt, wxWidgets, 和 IUP 都是其中的一些。
编辑:我改进了关于MSYS的上面的段落,强调它旨在成为编译本机Windows应用程序的编译时环境,而不是像Cygwin一样的完整的POSIX环境。
注意,还有一种选择是将项目移植到更传统的Windows开发编译器之一。Open Watcom、Borland编译器和Microsoft都有免费或廉价版本,尽管通常不在让开源社区完全满意的许可证下。最好的方法是使用mingw编译器重新编译所有内容。
简单的方法是在cygwin环境下重新编译它。
对于GUI,我也十分推荐Qt框架。它的编写和文档都非常出色;现在它已经根据LGPL许可证授权,因此您可以将其链接到专有应用程序而不需要任何费用。但是,它是用C++编写的,所以您需要更改编程语言。关于将QT与Visual Studio Express集成:我相信它可以工作,但您需要尝试一下。大约五年前,我为我的雇主测试了(专有的)QT和(专业的)Visual Studio的集成,它完美地工作了。