[Mono-dev] mono_config_parse (was: Embedding mono on windows: the missing (lib)mono.llib)
Sebastian Good
sebastian at palladiumconsulting.com
Tue Aug 21 18:23:31 EDT 2007
> Date: Tue, 21 Aug 2007 10:30:43 +0200
> From: Robert Jordan <robertj at gmx.net>
> Subject: Re: [Mono-dev] Embedding mono on windows: the missing
> (lib)mono.lib
> Hi,
>
> Sebastian Good wrote:
>
>> > I am attempting to embed a mono runtime in my C++ application. I'm using
>> > the standard 1.4.2 mono install (on WinXP) & Visual Studio 2005. I've
>> > generated the expected C++ compiler flags using
>> >
>> > pkg-config --msvc-syntax --cflags --libs mono
>> >
>> > And while my simple hello-world embedding application now compiles
>> > nicely, it fails to link with
>> >
>> > LNK1104: cannot open file 'mono.lib'
>> >
>> > I can confirm my install has no 'mono.lib', or even 'libmono.lib'. A
>> > search of this list and other sites suggests this is not all that
>> > uncommon. People seem to be trying to build mono using Cygwin in order
>> > to recreate the missing mono.lib (and sometimes running into other
>> > problems doing that). Am I being a knucklehead or is the standard mono
>> > Windows install missing this library? Is there an alternative to
>> > building mono myself? Should I be more interested in the '*.a' files
>> > sitting in my /lib directory?
>>
>
> Quick workaround:
>
> mono.def (see attachment) is built during the cygwin
> build process. From this file, you can generate mono.lib
> using MSVC's lib tool:
>
> lib /nologo /machine:x86 /def:mono.def /out:mono.lib
>
> Because the embedded API is stable, i.e. doesn't change often,
> you can use the lib with several Mono versions.
>
> Robert
> -------------- next part --------------
> An embedded and charset-unspecified text was scrubbed...
> Name: mono.def
> Url: http://lists.ximian.com/pipermail/mono-devel-list/attachments/20070821/e11fb03c/attachment.pl
>
Thanks very much Robert, this certainly did the trick. All is now linkin
and even running but failing to find mscorlib, which suggests to me it
is time to call mono_config_parse. A couple of notes. The samples at
http://www.mono-project.com/Embedding_Mono do not have the proper
#include directive, which appears to be
#include <mono/metadata/mono-config.h>
This gets us access to void mono_config_parse(const char *filename),
though we then fail to link again, with
error LNK2001: unresolved external symbol "void __cdecl
mono_config_parse(char const *)"
The .c and .h and Makefiles, as well as the defs file you sent I all
seem to agree that mono-config.c is linked into mono.dll -- indeed the
mono_config_parse function is even listed as an entry point in the
mono.dll I included. I have to say I don't understand why it won't link.
I have tried working around this by setting various environment
variables (e.g. MONO_PATH, MONO_CFG_DIR, etc.) but all result in the
runtime error of
The assembly mscorlib.dll was not found or could not be loaded. It
should have been installed in the
'c:\dev\ndi\InteropMonoEmbed\lib\mono\1.0\mscorlib.dll' directory.
It just seems to be looking for a lib relative to the path in which it
executes. I would be grateful for any hints on how to either
successfully link to the mono_config_parse (assuming this enables mono
to find its assemblies) or some way of pointing mono at its own
assemblies. Many thanks again.
- Sebastian
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3301 bytes
Desc: S/MIME Cryptographic Signature
Url : http://lists.ximian.com/pipermail/mono-devel-list/attachments/20070821/b1ec432f/attachment.bin
More information about the Mono-devel-list
mailing list