[Mono-list] interop with native C DLL on MAC OS X

Gigi Sayfan gsayfan at numenta.com
Tue Feb 16 14:25:52 EST 2010


Hi everybody,
Here is the situation:

I have a C++ library that I wrapped using Swig for C#. The result is a low-level .so file that contains a C wrapper for the C++ library and a bunch of C# files that talk to .so file via P/Invoke calls.

So far, so good.

I created a test program that included all the generated C# files and I was able to call the C++ code successfully through all the layers.

BTW, I'm using MonoDevelop as my IDE. I had some problems finding the .so file and eventually after reading http://www.mono-project.com/Interop_with_Native_Libraries I settled on the following solution:

- Put the .so file in the same directory as the .exe file and create .config file for the .so file that looks like that:

<configuration>
  <dllmap dll="net" target="net.so" />
</configuration>

Now, I want to wrap the whole mess in a non-executable assembly that will add a nicer interface and hide all the low-level stuff generated by Swig. So, I created
a library project, added all the Swig generated C# files, added my nice interface class that uses the low-level stuff.

The new library project builds just fine and created a net.dll file.

I created a new test program that references the net.dll and calling the nice interface. This program builds fine too.

When I try to run this program I get again a System.DllNotFoundException

I added a config file called net.dll.config, but this time it didn't help. I even tried to map to the absolute path of the .so file to no avail. I know that the config file is used because the DllNotFoundException in the output says it can't find the target DLL with the full absolute path.


Any ideas what I should try next?

Thanks, Gigi

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-list/attachments/20100216/1c5c8201/attachment.html 


More information about the Mono-list mailing list