如何在Ubuntu上为Windows编程?

有没有办法在Ubuntu的IDE(例如Anjuta)中创建(C++或C#)的Windows控制台应用程序,并将其编译为Windows?

1mingw是跨编译的明显选择,但我不知道如何将其与Anjunta集成。我确实在这里看到了一个关于集成mingw和kdevelop的教程:http://forums.gentoo.org/viewtopic-t-292180.html也许其中一些推荐mingw的人知道有关与Anjunta集成的教程? - RobotHumans
6个回答

你想进行交叉编译,这是一种为不同于你所在平台的其他平台编译代码的方法,尤其是当处理器完全不同的情况下。基本上,你需要安装目标平台(例如Windows)的所有头文件,然后告诉编译器它正在进行交叉编译,这样它就不会执行某些系统检查,而是会指向非标准目录。
根据你使用的语言,你可能会发现通过搜索或提出具体问题很有用,或者如果你正在使用基本的C语言,你可以使用MinGW工具和类似Linux的编译工具,如gcc:
sudo apt-get install gcc-mingw32
这里有一个关于使用MinGW工具进行Qt/Win32交叉编译的好指南。

你应该看一下MingW。它提供了一个兼容gcc的Windows编译器。
有一个跨平台版本可以从Linux使用,以生成Windows二进制文件。你可以通过synaptic安装它,或者运行以下命令安装:
sudo apt-get install gcc-mingw32
基于此,利用通常的'make'命令,你可以为Windows创建程序。
然后,任何允许你使用make和gcc的IDE都可以使用这个编译器。 例如,这是如何在Code::Blocks IDE中做到的

对我来说足够好 +1 - RobotHumans

其他答案对于C/C++代码是正确的;你需要获取一个交叉编译器。
对于C#代码,你可以直接使用Monodevelop Install Monodevelop,因为Mono的编译器生成与.NET编译器相同类型的字节码和可执行文件格式(反之亦然)。只要你在标准.NET基类库范围内或者将你使用的任何额外库与应用程序捆绑在一起,使用Mono构建的应用程序将在Windows机器上无需修改即可运行。

可能想试试用Qt和Qt Creator。这是一个很好的GUI和控制台应用程序框架,你可以编译成适用于Windows、Linux和OS X的应用程序。

http://qt.nokia.com/


最常见的在Linux(Ubuntu)上编写Windows应用程序的方法是使用Mingw工具:

http://www.mingw.org/

有适用于Mingw的Ubuntu软件包可供安装。

来自此页面

sudo apt-get install wine mingw32 mingw32-binutils mingw32-runtime

这就是基本交叉编译所需的全部。让我们试试:
#include <windows.h>

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
{
  MessageBox(NULL,
    "Cette fenêtre prouve que le cross-compilateur est fonctionnel !",
    "Hello World", MB_OK);
  return 0;
}

使用以下方式进行编译:
i586-mingw32msvc-g++ -o essai.exe essai.cpp

要执行此操作,您需要使用mingw库:mingwm10.dll。
gunzip -c /usr/share/doc/mingw32-runtime/mingwm10.dll.gz > mingwm10.dll

然后你可以启动它:
wine essai.exe

对话框的文本是带有法语口音的,要在gvim中处理它,将源代码转换为Windows代码页1252<ESC>:e ++enc=cp1252 另一个更强大的解决方案是使用UTF-8,但这需要改变字符串处理的方式。