[Mono-list] Running vs2005 beta 2 compiled code on mono...

Alex Mohr amohr at cs.wisc.edu
Sat Jul 2 01:47:52 EDT 2005

>The new managed C++ syntax is a bit different than the old syntax but is
>more reliable.
>ref struct foo {
>int bar, baz; };
>value struct foo {
>int bar, baz; };
>You can use ref class and value class as well. IL does not have separate
>class and struct types so you can use any of the struct or class keyword
>they mean the same.
>ref creates an object reference while value creates a value class.

Right.  I'm only looking at the new c++/cli.  But we can't just change
all our existing code to do this.  It still needs to compile as regular
native code.

In whidbey, you can use existing "normal" c++ code like this (even with
/clr:pure) -- stuff just won't be .net objects.

>Native C++ libraries built for Win32 cannot be used on Mac anyway. So you
>have to compile them into IL or use a native Mac library that is called by
>the managed code using P/Invoke.

Yeah of course.  Most of our low-level c++ code is platform independent
-- it already builds natively on linux, mac, windows.  We just want to
start using it in a c++/clr like system.  P/Invoke doesn't work because
our libs are very heavily OO.

So yes, we want to compile it into IL, which is what /clr:pure does, but
apparently this isn't enough because assemblies compiled with /clr:pure
can still reference external non-IL things as you have explained.

We want to do this so we can take advantage of .net runtime stuff with
new code and so we can build a nice layer to write c# stuff on top of.

We want to start writing new code that does stuff like 'ref class foo
{};' but that uses our existing c++ code *without modification*.  VS.NET
2005 lets us do this with ease.  Mono unfortunately does not.  That's my
problem right now.

>Alternatively you can embed Mono into your application and in this case
>you can add InternalCalls that are managed methods but are implemented
>natively: http://www.mono-project.com/Embedding_Mono

Thanks for the pointer.


More information about the Mono-list mailing list