26

Is there anyway to create (C++ or C#) windows console applications inside Ubuntu's IDE (e.g Anjuta) and compile it for Windows?

1
  • 1
    mingw is the obvious choice for cross-compiling, but i have no idea how to integrate it with Anjunta. I did see a tutorial on integrating mingw and kdevelop here: forums.gentoo.org/viewtopic-t-292180.html maybe one of the folks recommending mingw knows of an integration with Anjunta tutorial? Nov 22, 2010 at 20:42

6 Answers 6

21

You want to do cross-compiling, which is a way to compile code for platforms other than the one your on, especially when the processor is completely different. Basically you need to install all the headers for your target (i.e. windows) and then tell the compiler it's cross-compiling so it won't do some of the system checks and instead will point to non-standard directories.

Depending on the language you might find it useful to do a search or question specifically, or if you're doing basic c you can use MinGW tools and the same sort of linux based compile tools that use gcc:

sudo apt-get install gcc-mingw32

There is a good guide for qt/win32 cross compiling using MinGW tools.

12

You should have a look at MingW. It provides a gcc-compatible compiler for windows.

There is a cross-platform version that you can use from Linux, to generate Windows binaries. You can install it with synaptic, or by running:

sudo apt-get install gcc-mingw32

Based on that, and with using the usual 'make' command, you can create programs for windows.

Then any IDE that allows you to use make and gcc can use this compiler. For instance, here is how to do that from the Code::Blocks IDE.

1
  • good enough for me +1 Nov 22, 2010 at 20:59
7

The other answers are correct for C/C++ code; you'll need to get a cross-compiler.

For C# code, you can just use Monodevelop Install Monodevelop, as Mono's compiler produces the same type of bytecode and executable format as the .NET compiler (and visa versa). Apps you build with Mono will run unmodified on Windows machines as long as you stay within the standard .NET Base Class Libraries or bundle any extra library you use with your app.

5

Might want to give Qt with Qt Creator a try. Great framework for GUI and Console application you can the compile for Windows, Linux and OS X.

http://qt.nokia.com/

2

The most common way to program windows application linux (ubuntu) is using the mingw tools:

http://www.mingw.org/

There are ubuntu packages for mingw ready to install.

2

From this page:

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

This is all that is needed for basic cross-compilation. Let's try:

#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;
}

Compile this using:

i586-mingw32msvc-g++ -o essai.exe essai.cpp

To execute, you need the mingw library: mingwm10.dll:

gunzip -c /usr/share/doc/mingw32-runtime/mingwm10.dll.gz > mingwm10.dll

Then you can launch it:

wine essai.exe

The text of the dialog box is in French language with an accent, to do it with gvim, convert the source to windows code page 1252: <ESC>:e ++enc=cp1252

Another solution, more powerful is to use UTF-8 but this requires changing the way strings are handled.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .