[Mono-devel-list] P/Invoke wierdness

James Fitzsimons james.fitzsimons at gmail.com
Sat Feb 12 10:05:03 EST 2005

Hi all,

I am trying to use marshalling to use some C libs from my mono app.
Unfortuately this is not going well. I have to external libraries that I
want to use, libhighgui.so and libopencv.so (from the opencv computer
vision project).

In my application I have the following code:

private static extern IntPtr cvCreateImage( CvSize size, int depth, int
channels ); // used to return IplImage*
// Highgui stuff	
private static extern System.IntPtr cvLoadImage(string filename, int

public CvImage(string filename, bool isColor)
	Console.WriteLine("Loading image");
	iplImage = cvLoadImage(filename, 1);
	Console.WriteLine("Image loaded");
public CvImage(CvSize size, int depth, int channels )
	iplImage = cvCreateImage( size, depth, channels); 

The libraries libhighgui.so and libopencv.so are both in /usr/local/lib.

When I write a small test app that loads an image from file with the
following line:
CvImage image = new CvImage("someimage.jpg", false);

I get the following error:
james at athos src $ mono CvImage.exe 
CvImage test application
Loading image
mono: symbol lookup error: /usr/local/lib/libhighgui.so: undefined
symbol: cvCreateImage

Which is strange because libhighgui should be calling the cvCreateImage
in libopencv directly...

If I change my application to call the cvCreateImage method in libopencv
directly instead of going via libhighgui like so:
CvImage image = new CvImage(new CvSize(100,100), 8, 3);
I get this:
james at athos src $ mono CvImage.exe 
CvImage test application

Unhandled Exception: System.DllNotFoundException: opencv
in <0x0004a> (wrapper managed-to-native) Slam.CvImage:cvCreateImage
in <0x00029> Slam.CvImage:.ctor (Slam.CvSize,int,int)
in <0x00062> Slam.MainClass:Main (string[])

Huh? How come it can find libhighgui and not libopencv when they are in
exactly the same location?

I'm confused! Can anyone shed some light?

James Fitzsimons

It's 5.50 a.m.... Do you know where your stack pointer is ?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://lists.ximian.com/pipermail/mono-devel-list/attachments/20050212/29f8caf2/attachment.bin 

More information about the Mono-devel-list mailing list