[Mono-list] Difficulty with DllImport in mono - config.AG_Config file is not in load-path.

STEVEN STAPLETON stapleton.41 at osu.edu
Sat Mar 19 13:27:47 EDT 2011


I don't mind sharing the wrapper code (I plan on BSD'ing it anyway). Should I put it on a web server for anyone to access, or should I attach it to a mail?

I am compiling it without the .dll extension - however VS2010 is adding it implicitly it seems - that's why I added the extra stuff to the .config file (see original mail). It works for the two functions that get called from ag_core up 
to that point (AG_InitCore, AG_GetError).

A quick example of the imports:
//does not work
[DllImport("ag_gui", EntryPoint="AG_InitGraphics", ExactSpelling=true, CallingConvention=CallingConvention.Cdecl)]
static public extern Int32 InitGraphics(string driver);
//works
[DllImport("ag_core", EntryPoint="AG_InitCore", ExactSpelling=true, CallingConvention=CallingConvention.Cdecl)]
static private extern Int32 AG_InitCore(string progname, Uint32 flags);
//works
[DllImport("ag_core", EntryPoint="AG_Getopt", ExactSpelling=true, CallingConvention=CallingConvention.Cdecl)]
static private extern Int32 AG_Getopt(Int32 argc, string[] argv, string fmt, out string v, out Int32 index);
//works
[DllImport("ag_core", EntryPoint="AG_GetError", ExactSpelling=true, CallingConvention=CallingConvention.Cdecl)]
static public extern string GetError();
 
 
 


Thanks,
-Jim Stapleton


----- Original Message -----
From: Danny <dgortonii at gmail.com>
Date: Saturday, March 19, 2011 4:39 pm
Subject: Re: [Mono-list] Difficulty with DllImport in mono - config.AG_Config file is not in load-path.
To: jims <stapleton.41 at osu.edu>
Cc: mono-list at lists.ximian.com

> Without seeing your wrapper code, I'd guess that your DllImport 
> statements include the file extension (.dll).  To make the 
> lookup work 
> properly on Linux/Mono you either need to exclude the file 
> extension 
> (ie: just use 'ag_gui' - both .NET and Mono will resolve this 
> correctly 
> if the file is in a proper search path) so the native naming 
> schemes can 
> be used on the respective platforms, or use a DllMap in your 
> config file 
> to tell mono how to map ag_gui.dll (and others).
> 
> On 03/19/2011 11:55 AM, jims wrote:
> > Background, I am working on a C# wrapper for Agar ( 
> http://libagar.org/ ) in
> > Visual Studio express 2010. I have knocked the .NET framework 
> target down to
> > 2.0 to improve platform compatibility, for users of older software.
> >
> > When I try to run the first demo, I get this error:
> > [sjss at elrond ~/Desktop/Agar.NET_Demo]$ mono ./AgarDemo_Windows.exe
> > [DllNotFoundException:ag_gui.dll]The //config.AG_Config file 
> is not in
> > load-path.
> >
> > verification it exists:
> > [sjss at elrond ~/Desktop/Agar.NET_Demo]$ ls -l /usr/local/lib | 
> grep -e
> > 'libag_.*.so'
> > lrwxr-xr-x   1 root  
> wheel        17 Mar 18 15:39 
> libag_core.so ->
> > libag_core.so.1.4
> > -rw-r--r--   1 root  wheel    
> 299513 Mar 18 14:54 libag_core.so.1.4
> > lrwxr-xr-x   1 root  
> wheel        16 Mar 18 15:39 
> libag_dev.so ->
> > libag_dev.so.1.4
> > -rw-r--r--   1 root  
> wheel     70586 Mar 18 14:54 libag_dev.so.1.4
> > lrwxr-xr-x   1 root  
> wheel        16 Mar 18 15:39 
> libag_gui.so ->
> > libag_gui.so.1.4
> > -rw-r--r--   1 root  wheel   1246374 
> Mar 18 14:54 libag_gui.so.1.4
> > lrwxr-xr-x   1 root  
> wheel        17 Mar 18 15:39 
> libag_math.so ->
> > libag_math.so.1.4
> > -rw-r--r--   1 root  wheel    
> 328560 Mar 18 14:54 libag_math.so.1.4
> > lrwxr-xr-x   1 root  
> wheel        15 Mar 18 15:39 
> libag_rg.so ->
> > libag_rg.so.1.4
> > -rw-r--r--   1 root  wheel    
> 255964 Mar 18 14:54 libag_rg.so.1.4
> > lrwxr-xr-x   1 root  
> wheel        15 Mar 18 15:39 
> libag_vg.so ->
> > libag_vg.so.1.4
> > -rw-r--r--   1 root  wheel    
> 205641 Mar 18 14:54 libag_vg.so.1.4
> >
> >
> > I have installed Agar, FreeType and SDL on my machine, all the 
> libs are in
> > /usr/local/lib, are in my libpath, and the directory has been 
> ldconfig'ed> for good measure after the first time I saw the error.
> >
> > Since Visual Studio 2010 wants to add the '.dll' to the first 
> argument of
> > the DllImport call, I have added the following to the  
> section of the config
> > config of all of my .NET dlls/exes:
> >
> >
> >
> >
> > ag_core.so is loading properly, the error message is produced by:
> >    
> System.Console.WriteLine("["+e.GetType().Name+":"+e.Message+"]" +
> > Agar.GetError()+"\n");
> >
> > The Agar.GetError() part is what I find interesting - that 
> requires that
> > ag_core be called. I *believe* the "//config.AG_Config file is 
> not in
> > load-path." portion of the error is being set by an earlier 
> portion of the
> > code in a manner that doesn't cause an exception or problem, 
> as a warning.
> > Regardless, it shouldn't make "ag_gui" unlocatable.
> >
> >
> > Any ideas what I should look into next?
> > Thanks,
> > -Jim Stapleton
> >
> > --
> > View this message in context: 
> http://mono.1490590.n4.nabble.com/Difficulty-with-DllImport-in-
> mono-config-AG-Config-file-is-not-in-load-path-tp3389891p3389891.html
> > Sent from the Mono - General mailing list archive at Nabble.com.
> > _______________________________________________
> > Mono-list maillist  -  Mono-list at lists.ximian.com
> > http://lists.ximian.com/mailman/listinfo/mono-list
> >
> 
> 
> -- 
> BEGIN-ANTISPAM-VOTING-LINKS
> ------------------------------------------------------
> 
> Teach CanIt if this mail (ID 1171312426) is spam:
> Spam:        
> https://antispam.osu.edu/b.php?i=1171312426&m=0e1a982f2ad2&c=sNot spam:    https://antispam.osu.edu/b.php?i=1171312426&m=0e1a982f2ad2&c=n
> Forget vote: 
> https://antispam.osu.edu/b.php?i=1171312426&m=0e1a982f2ad2&c=f---
> ---------------------------------------------------
> END-ANTISPAM-VOTING-LINKS
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-list/attachments/20110319/688f1a23/attachment.html 


More information about the Mono-list mailing list