[Mono-list] Embedding mono on windows

Petit Eric surfzoid at gmail.com
Thu Apr 3 07:56:36 EDT 2008


2008/3/31, Damien DALY <maitredede at gmail.com>:
> I didn't made it full C# because it's to make a plugin engine for an
> existing C/C++ app... Actual plugin engine is C/C++, and I would like to add
> C# plugins. The C# part is easy for me, but C/C++ wrapper is hard to code
> since I'm a begginer in C/C++...
Best way should be to use the interact methode with CIL no?, like in
the like yu provide :
http://www.mono-project.com/PInvoke
>
> If anyone can give me some samples better than those on svn, I would be
> pleased :)
http://www.google.fr/search?q=helloword+C%2B%2B&ie=utf-8&oe=utf-8&aq=t&rls=com.mandriva:en-US:official&client=firefox-a
http://www.google.fr/search?hl=fr&client=firefox-a&rls=com.mandriva:en-US:official&hs=PN3&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=hello+world+C%2B%2B&spell=1
http://www.cppfrance.com/
http://www.developpez.com/
>
>
> Thanks.
>
> Damien
>
> 2008/3/31, Petit Eric <surfzoid at gmail.com>:
> > Damien, to have a good luke, to forget the list in your answer.
> >
> >
> > 2008/3/31, Damien DALY <maitredede at gmail.com>:
> >
> > > Hi Eric,
> > >
> > > What I want to do is to call my custom C function from my C#.
> > >
> > > I'm exposing it using C function mono_add_internal_call, like it is show
> on
> > > sample at http://www.mono-project.com/Embedding_Mono
> > > "Exposing C code to the CIL universe".
> >
> > Not sur to understand evry thing and had a very quick look at the
> > link, but i don't think about mixed language in a single project type
> > ?
> > if you speak about the chapter :" Exposing C code to the CIL universe"
> > it's wat i sayed, you need two part, one is a dll/so (a library) write
> > in C managed code and a "wrapper" of it in C#.
> > But if you just started the project, why don't just make evrything in C# ?
> >
> >
> > >
> > > So in my C code, I define a function with this code :
> > >
> > > static const void MonoMsg(MonoString *msg)
> > > {
> > >         Error(mono_string_to_utf8(msg));
> > > };
> > >
> > > In my C# code, I have this class :
> > >
> > > namespace MonoPlug
> > >  {
> > >     internal static class ClsInternal
> > >     {
> > >
> [MethodImplAttribute(MethodImplOptions.InternalCall)]
> > >         internal extern static void MonoMsg(string message);
> > >     }
> > > }
> > >
> > > I expose my C function using :
> > >
> > > mono_add_internal_call("MonoPlug.ClsInternal::Msg",
> MonoMsg);
> > >
> > > Under windows VS2008 it compiles and runs successfuly, but under linux,
> I
> > > have compilation errors :
> >
> > I gues, mono compiler is more restrictive than Crosoft one, i alredy
> > see it in C# in the past, there is more warning, and not sur but some
> > warning are "like" error, also it's like pointer problem, right ?
> > Nota : i have no C knoweldge.
> >
> > >
> > > MonoPlug.Test.cpp:83: erreur: invalid conversion from «const void
> > > (*)(MonoString*)" to «const void*"
> > >  MonoPlug.Test.cpp:83: erreur:   initializing argument 2 of «void
> > > mono_add_internal_call(const char*, const void*)"
> > >
> > > By focing cast to (void*) I can compile, but I have a
> MissingMethodException
> > > when trying to call method...
> > >
> > > I know they are easy errors for C/C++ developpers, but since I'm
> starting
> > > coding C/C++, I don't know if I can find mysself the answer...
> > >
> > > If you want, you can answer me in French...
> > >
> > > Thanks,
> > >
> > > Damien
> > >
> > > 2008/3/31, Petit Eric <surfzoid at gmail.com>:
> > > > 2008/3/31, Damien DALY <maitredede at gmail.com>:
> > > >
> > > > > Thanks Robert
> > > > >
> > > > > I'm also sending to list (sorry for missed messages, they are
> below).
> > > > >
> > > > > I will try to work with these functions.
> > > > >
> > > > > Now, I would like to call C function from my C#, and passing
> arguments
> > > to
> > > > > the function (like saying hello to string argument)...
> > > >
> > > >
> > >
> http://www.google.fr/search?q=dllimport&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:fr:official&client=firefox-a
> > > > an Example in this file :
> > > >
> > >
> http://cs-obexftp.svn.sourceforge.net/viewvc/cs-obexftp/trunk/src/obexftp/obexftpPINVOKE.cs?revision=151&view=markup
> > > >
> > > > If you are luky, try SWIG (under linux) to make the biggest work!
> > > >
> > > >
> > > > >
> > > > > Thanks,
> > > > >
> > > > > Damien
> > > > >
> > > > > 2008/3/31, Robert Jordan <robertj at gmx.net>:
> > > > > > Hi,
> > > > > >
> > > > > > Next time please reply to the list as well.
> > > > > >
> > > > > > Mono_set_defaults and
> > > mono_parse_default_optimizations
> > > > > are not public
> > > > > > anymore because they were not intended to be called from user
> code.
> > > > > > The runtime is calling them for you.
> > > > > >
> > > > > > On (2): mono depends on GLib, GNOME's portable C library. This lib
> > > > > > provides a lot of path functions:
> > > > > >
> > > > > >
> > > > >
> > >
> http://library.gnome.org/devel/glib/stable/glib-Miscellaneous-Utility-Functions.html
> > > > > >
> > > > > > See g_get_current_dir, g_build_path, etc.
> > > > > >
> > > > > > On Windows, mono's installer is deploying this lib automatically
> into
> > > > > > mono's lib folder. Just link your app with "glib-2.0.lib".
> > > > > >
> > > > > >
> > > > > > Robert
> > > > > >
> > > > > >
> > > > > >
> > > > > > Damien DALY wrote:
> > > > > > > Yeah, it works !
> > > > > > > Thanks...
> > > > > > >
> > > > > > > Two more questions :
> > > > > > >
> > > > > > > 1) I'd like to execute :
> > > > > > >     mono_config_parse(NULL); //To load default config
> > > > > > >     mono_set_defaults(0,
> > > > > mono_parse_default_optimizations(NULL)); //To add
> > > > > > > all optimizations
> > > > > > >
> > > > > > > mono_config_parse is defined in mono-config.h. I have a linker
> error
> > > > > > > "unresolved symbol"
> > > > > > > mono_set_defaults and
> > > mono_parse_default_optimizations
> > > > > are not defined...
> > > > > > >
> > > > > > > I'm using windows release with installer file "
> > > > > > > mono-1.9-gtksharp-2.10.4-win32-4"...
> > > > > > >
> > > > > > > 2) How can I find the directory of current module executing in
> C++ ?
> > > > > > > This is to tell mono that it must search assemblies in a sub
> folder
> > > of
> > > > > > > current exe... (mono_set_dirs)
> > > > > > > And if you have a safe concat function for path... (like managed
> > > > > > > Path.Combine)
> > > > > > > And that works for any OS... :o)
> > > > > > >
> > > > > > > Thanks
> > > > > > >
> > > > > > > Damien
> > > > > > >
> > > > > > >
> > > > > > > 2008/3/31, Robert Jordan <robertj at gmx.net>:
> > > > > > >> Damien DALY wrote:
> > > > > > >>> Hi,
> > > > > > >>>
> > > > > > >>> I'd like to embed Mono into my app, but I haven't found some
> doc
> > > > > > >> explaining
> > > > > > >>> how to do this using Windows and VS2008 (under XP and Vista).
> > > > > > >>> The starting point I have found is
> > > > > > >>> http://www.mono-project.com/Embedding_Mono
> > > > > > >>>
> > > > > > >>> If someone has help about Ebedded Mono under Windows, I would
> be
> > > > > pleased
> > > > > > >> to
> > > > > > >>> hear about.
> > > > > > >>
> > > > > > >> The docs apply to Windows/Visual Studio as well, but they don't
> > > explain
> > > > > > >> how to setup a project to the same extent like they do for
> linux or
> > > > > > >> cygwin.
> > > > > > >>
> > > > > > >> Basically, you only need to generate an import library for
> > > mono.dll,
> > > > > > >> the dll that provides the embedding APIs.
> > > > > > >>
> > > > > > >> Get this file:
> > > > > > >>
> > > > > > >>
> > > > > > >>
> > > > >
> > >
> http://anonsvn.mono-project.com/viewcvs/*checkout*/trunk/mono/msvc/mono.def
> > > > > > >>
> > > > > > >> and create mono.lib with Visual Studio's lib.exe tool:
> > > > > > >>
> > > > > > >>         lib /nologo /def:mono.def /out:mono.lib /machine:x86
> > > > > > >>
> > > > > > >> Then link you application with mono.lib.
> > > > > > >>
> > > > > > >> Robert
> > > > > > >>
> > > > > > >>
> _______________________________________________
> > > > > > >> Mono-list maillist  -  Mono-list at lists.ximian.com
> > > > > > >>
> http://lists.ximian.com/mailman/listinfo/mono-list
> > > > > > >>
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > _______________________________________________
> > > > >  Mono-list maillist  -  Mono-list at lists.ximian.com
> > > > >  http://lists.ximian.com/mailman/listinfo/mono-list
> > > > >
> > > > >
> > > >
> > >
> > >
> >
>
>
> _______________________________________________
>  Mono-list maillist  -  Mono-list at lists.ximian.com
>  http://lists.ximian.com/mailman/listinfo/mono-list
>
>


More information about the Mono-list mailing list