[Mono-list] Fwd: Possible replacement for Windows.Forms
murban
murban@houston.rr.com
Tue, 16 Jul 2002 22:05:27 -0500
Have you looked at some of the other bindings that call C++ from C#? One
example is Qt#. It's a work in progress, but the basic concepts of using a
C++ based toolkit from C# are working. There are many other examples, such as
WxPython and QtJava.
The bindings that I have looked at use a two-level approach. The first level
is a set of C functions. There are one or more C functions that perform 'new
WhateverObject' and then return the result, and there are other C functions
that simply call the C++ function. Thiis lower level is compiled #extern "C"
so that name mangling is not performed. The second level consists of a set of
C# methods that call the C functions. In the case of Qt#, the C functions are
provided by another library QtC.
I believe it is possible to minimize (probably not eliminate) the C layer, but
the C functions that perform the 'new' for C++ objects are difficult to
eliminate. The other two complications of calling C++ directly are that the
compiler does name-mangling on the C++ methods, and the fact that virtual
methods only appear as methods on the base class.
> I have been looking at wxWindows for quite some time. I don't
> think I personally want to deal with importing C++ classes and looking
> at them as structs. This seems very, very painful. Unless someone can
> explain an easier way to platform invoke these, I don't think this will
> work.