I'm sort of cunfused on the direction (CLI to C++ or C++ to CLI?) and
what is going to be hosting which. I believe this might help though.
There are few methods for access classes in CLI using C/C++.
One method is by calling the mono embedding api as miguel said its a
tad slow in my experience but its nicer for somethings. In fact there
is an application right now in the mcs source under "mcs/tools/cilc/"
that will generate a binding library for you automaticly, but that
won't give you nice C++ classes, just C based GObject classes (but its
still totally accessable in C++).
The other big one is using function pointers (delagates in C#). I
uploaded this example I created to show how:
http://polystimulus.com/PinvokeCallbackTest.tar.gz
In this method I store all the function pointers (delegates in C#) in a
C# struct and pass that to the C lib on the backend using p/invoke. You
have to declare a struct in C that matches the one in C# so that it
will marshal correctly, but its not all that hard once you get the hang
of it. (See http://www.mono-project.com/Interop_with_Native_Libraries
or the msdn docs on the Marshal class and MarshalAs attribute for more
reference)
So even though it can be a little bit of work, it's totally possible.
--
Zac Bowling
http://zacbowling.com/
----- Message from [EMAIL PROTECTED] ---------
Date: Thu, 9 Mar 2006 15:10:55 -0800 (PST)
From: J <[EMAIL PROTECTED]>
Reply-To: J <[EMAIL PROTECTED]>
Subject: [Mono-dev] c# / c++ interop question
To: mono-devel-list@lists.ximian.com
Hi, I wrote a MS .NET 2.0 C# wrapper of a c++ 2d game engine. The
engine (Torque Game Builder) is cross platform, so obviously it would
be benificial to port my wrapper to mono instead of Msft's
implementation.
To talk from c# to C++, I use PInvoke, which should work in the mono
world with little change needed.
However, going from C++ to C#, I am using C++/CLI. Obviously, that
will not fly in the mono world, so I'd like to find out what
alternatives there are to do this in an elegant way. (fyi, I am an
ok c++ dev, but i am only as advanced as kinda knowing how to use
function pointers and run-time linking)
So I am looking for the best way to talk from C++ to C#. As I
mentioned, I mostly understand the concept of using function
pointers, would that be the best way? or is there some way of
referencing a mono assembly inside a c++ project, so I can link to it
like a normal library?
Or, is there a better solution?
Thanks for your time,
-Jason
PS: (disclaimer: i pinged a similar question to the mono dev list
maybe 8 months ago, I am repinging to see what any answer deltas may
be :)
---------------------------------
Brings words and photos together (easily) with
PhotoMail - it's free and works with Yahoo! Mail.
----- End message from [EMAIL PROTECTED] -----
_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list