hello,

> The thing is, in C++ I also use a few macros, which I won't be able to use
> either, but I can probably manage that by duplicating it in C# (yuck,
> duplication). I do however need to reference som global constants defined in
> ruby.h like this:
> 
> typedef unsigned long VALUE;
> 
> EXTERN VALUE rb_mKernel;
> EXTERN VALUE rb_mComparable;
> EXTERN VALUE rb_mEnumerable;
> EXTERN VALUE rb_mPrecision;
> EXTERN VALUE rb_mErrno;
> EXTERN VALUE rb_mFileTest;
> EXTERN VALUE rb_mGC;
> EXTERN VALUE rb_mMath;
> EXTERN VALUE rb_mProcess;
> 
> How can I DllImport these? I tried:
> 
> [DllImport(@"c:/ruby180/bin/msvcrt-ruby18.dll")]
> public static extern /* VALUE */ uint rb_cModule;

Jonathan already pointed out that you can not import variables, so you
need a helper library in the middle:

bash$ cat binding.c
#include <ruby.h>
int ruby_get_mKernel ()
{
        return rb_mKernel;
}

int ruby_get_mErrno ()
{
        return rb_mErrno;
}

Compile:

        gcc -shared binding.c -o binding-helper.so

Bind:

        [DllImport ("binding-helper.so")]
        public static extern int rb_mKernel

Miguel
_______________________________________________
Mono-list maillist  -  [EMAIL PROTECTED]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to