No idea about the SIGSEGV, but your code could use some improvement...
On Jan 27, 2011, at 1:43 AM, batuakan wrote:
> c# source code
> -----------------
>
> using System;
> using System.ComponentModel;
> using System.Runtime.InteropServices;
>
>
> namespace swi
> {
> class MainClass
> {
>
> [DllImport("libdl.so", CallingConvention =
> CallingConvention.Cdecl,
> CharSet = CharSet.Auto)]
First of all, "libdl.so" may not exist; it certainly doesn't exist on my
openSUSE 11.2 installation, as it's part of a debug package which I don't have
installed. You either want to [DllImport ("libdl.so.2")] or provide a
.exe.config file which maps libdl.so to the actual library:
http://www.mono-project.com/Config_DllMap
> private static extern IntPtr dlopen([In] string filename, [In]
> int flags);
[In] isn't necessary (as it's the default), but it won't hurt anything either.
> public static void Main (string[] args)
> {
> IntPtr handle = dlopen("libc.so.6", 0x02);
> if (handle == null)
This is wrong; it will ~never be true, as in order to operate you would need to
box the IntPtr into an object to compare against null, and a boxed object will
obviously never be null.
(Plus, iirc many mcs versions will error on the above code because the C# spec
was interpreted to prevent that, as it's obviously non-sensical.)
Instead, you should do:
if (handle == IntPtr.Zero)
- Jon
_______________________________________________
Mono-list maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list