If you saw the example code I sent I was passing the full path to the EXE to both mono_jit_init and mono_domain_assembly_open.
The purpose of embedding is to embed the Mono runtime into your app so that it runs without installing Mono. This error indicates the embedded runtime could not find the MonoPosixHelper dll or dylib. When running mono from the terminal you have the fully installed mono runtime so everything resolved. In my code before calling mono_jit_init I do this: NSString *mPath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"Contents/Libraries/lib"]; mono_assembly_setrootdir([mPath UTF8String]); Then I have the folder structure: MyApp.app/Contents/Libraries/lib/mono/2.0/mscorlib.dll MyApp.app/Contents/Libraries/*.dll MyApp.app/Contents/Libraries/libmono-2.0.1.dylib MyApp.app/Contents/Libraries/MyApp.exe I have all DLLs my app depends on. For example, System.Configuration.dll, System.dll, System.Core.dll, Mono.Posix.dll, etc. As well as my DLLs. Your app may also depend on: /Library/Frameworks/Mono.framework/Versions/2.8.2/lib/libMonoPosixHelper.dylib So you have to include that file in the Libraries folder as well as link against it so that it loads at runtime. You can also manually call dlopen passing the "correct" path to libMonoPosixHelper.dylib. Correct being relative or full, though I recommend full. I do not know how you are compiling your OSX app but otool and install_name_tool were very useful in my understanding of the embedding process. There are also older threads on the mono mailing lists that have more details. You can do a google search to find them "mono embed osx duane". http://go-mono.com/forums/#nabble-td1548393 http://web.archiveorange.com/archive/v/IMVlhkecSBeuoQZ4wDcv Hope that helps you move along. Duane On Tue, Mar 15, 2011 at 6:45 AM, vinay_rk <vinay.kash...@ironmountain.com>wrote: > Hi, > > I got the thing to work... but I' am not very thrilled with the > resolution... It seems like it'll work only if I use the same string for > both MonoDomain creation thru mono_jit_init and also for loading assembly > thru mono_domain_assembly_open.. In essense I am having to pass the > assembly > file path string even for the Domain, I used to think that it just requires > a string name for the domain. > > But with this issue gone.. when I continued my work I hit upon another > issue: My managed app uses the Mono.Unix.UnixDirectoryInfo class and at the > instantiation of this class I get an exception that says : > > Unhandled Exception: System.TypeInitializationException: An exception was > thrown by the type initializer for Mono.Unix.Native.Syscall ---> > System.DllNotFoundException: MonoPosixHelper > at (wrapper managed-to-native) Mono.Unix.Native.Syscall:_L_ctermid () > at Mono.Unix.Native.Syscall..cctor () [0x00000] in :0 > --- End of inner exception stack trace --- > at Mono.Unix.UnixFileSystemInfo.GetFileStatus (System.String path, > Mono.Unix.Native.Stat& stat) [0x00000] in :0 > at Mono.Unix.UnixFileSystemInfo.Refresh (Boolean force) [0x00000] in :0 > at Mono.Unix.UnixFileSystemInfo..ctor (System.String path) [0x00000] in :0 > at Mono.Unix.UnixDirectoryInfo..ctor (System.String path) [0x00000] in :0 > at SimpleScanner.Program.Main (System.String[] args) [0x00000] in :0 > > I am trying this on Mac OSX and I dont get this problem if I run my exe > directly from Terminal using: Mono . So how is the environment different > in > case of Mono Embedding for this to happen. > > Any help is highly appreciated... > Thanks in advance. > > -Vinay > > -- > View this message in context: > http://mono.1490590.n4.nabble.com/Embedding-Mono-tp3345310p3356206.html > Sent from the Mono - Dev mailing list archive at Nabble.com. > _______________________________________________ > Mono-devel-list mailing list > Mono-devel-list@lists.ximian.com > http://lists.ximian.com/mailman/listinfo/mono-devel-list >
_______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list