Linux compat planned?

r2d22k

28-08-2008 22:16:06

I read that MOGRE is not Mono compatible and so it's not Linux compatible. Is Mono/Linux compatibility planned?

Bekas

29-08-2008 12:26:01

Not likely to happen, unless C++/CLI gets implemented for Mono/Linux.

r2d22k

29-08-2008 12:52:24

It is
http://www.mono-project.com/Interop_wit ... _Libraries

Bekas

29-08-2008 13:04:09

This is C# P/Invoke, Mogre's wrapping code is in C++/CLI, see: http://en.wikipedia.org/wiki/C%2B%2B/CLI

r2d22k

29-08-2008 13:23:33

Ouch, sorry i totally forgot that C++/CLI and the normal CLI are two completely different things.
Is the performance really noticeable better when using C++/CLI?

Bekas

29-08-2008 14:16:30

For better or for worse, this was a choice based on the better control that C++/CLI offers. i.e. it's dead simple to use .NET classes and methods by C++ (used for this: http://www.ogre3d.org/wiki/index.php/OGRE-MOGRE_interconnection).

FWIW, I believe C++/CLI would eventually be supported for Mono/Linux, but after about 3-4 years.

Bekas

04-09-2008 22:36:47

Here's some relevant comments by a Mono developer:
http://primates.ximian.com/~massi/blog/archive/2008/Aug-04.html
However, in the process I found out that SWIG, as a tool for interfacing C# with native code, does the job but has serious deficiencies.
One is that it does not work with arrays (at least the version I have, 1.3.35).
Another one is that it produces lots of native code, and invokes it practically for everything, so even a simple field access becomes a call to a native C function (which involves a managed-umnanaged transition and all). I really believe that a wrapper generator tailored specifically for the .NET world could use the CIL much more effectively (the SWIG C# backend is almost a copy of the Java one...).
Finally, SWIG encourages the use of "interface files" distinct from the native C header files of the API it is working on. While this is understandable, I think a more direct approach would be more practical.

My impression is that the Windows crowd does not feel the pain because when they need to interoperate with native code they have managed c++. At first I just dismissed it as a "language abomination", something taking the already complex C++ and adding all sort of quirks and different ways of doing things on top of it. But now, thinking better, it is the perfect tool to interoperate managed and unmanaged code, and in the free software world we lack something with that power.