[Mono-list] C# in C++ using Mono
Richard Wareham
rjw57@hermes.cam.ac.uk
Tue, 6 Apr 2004 10:56:42 +0100
On Monday 05 April 2004 5:26 pm, yonas.gebremeskel@swedbank.com wrote:
>
> We have a C# application that has been developed in Visual studio on
> windows by another department in our company and we would like to use it in
> our C++ application on solaris SPARC environment. I've checked your website
> and it seems like Mono solves our problem. My question is if it is possible
> to recompile the C# application in Mono and use that class in our C++
> application (without Mono)?
Depends what you mean by 'without mono'. What it sounds like you are after if
a C# -> native code compiler which, AFAIK, isn't available anywhere yet [cf
the gcj Java -> native code compiler]. OTOH it is perfectly possible to embed
the mono runtime in your C++ app. This means from the PoV of an 'end-user'
they just run your app and are none the wiser.
See http://www.go-mono.com/embedded-api.html
I assume that the reason you don't want to include mono is related to
licensing? The runtime itself is licensed under the LGPL which means,
effectively, you can link to it in your propriety programs without fearing
the wrath of RMS (cf SDL & Linux games such as UT2004).
If it is relaterd to performance I don't think you have to worry. For me at
least the performance of mono has been superb, and the JIT seems just as fast
as compiled C (/very/ unscientific benchmarks performed on a proof-of-concept
port of part of my PhD). The startup latency is unmeasurable to my eyes. I
suspect its below the critical 0.7s :).
> In the FAQ page on question 3 you talk about <<
> This means for example that if you define a class to do algebraic
> manipulation in C#, that class can be reused from any other language that
> supports the CLI. You could create a class in C#, subclass it in C++ and
> instantiate it in an Eiffel program.
The key here is 'language that supports the CLI', i.e. it needs to be ported
or modified to use the CLI runtime to do its 'dirty work'. There were some
perl bindings posted a while back on the list in reply to my own post which
contained something similar for Perl.
> Does it also mean you can create a class in C#, subclass it in C++ and call
> the functions in the C# class from the C++ application?
Again only in supported languages. Microsoft has 'managed C++', their
propriety hack on top of C++ to achieve this. I don't know if there are
similar efforts to produce a hacked gcc.
--
Rich