[Mono-list] Mercury on Mono (not successful)
Paolo Molaro
lupus@ximian.com
Thu, 27 Feb 2003 17:08:37 +0100
On 02/27/03 Fergus Henderson wrote:
> The first one is that Mono doesn't search the GAC.
> OK, that one is easy to work around; just add the appropriate
> directory to the PATH.
Is there a windows developer here? I someone can provide the code
that returns the path to the GAC, I'll add it to the default search path
when running in windows.
> The second one is that Mercury and Mono both define a DLL named "gc.dll".
> Putting the Mercury gc.dll first in the PATH causes `mono' to abort with
> the error message
>
> mono.exe - Application Error
>
> The application failed ot initialize properly (0xc000007b).
> Click on OK to termiante the application
This is an issue with the program loader in windows: mono is dynamically
linked to the Boehm GC library, named gc,dll. If the loader finds your
dll, it can't use it for resolving the symbols and aborts the
application. I have no idea how to solve this issue.
> Unfortunately I still got a LOT of warning messages (8,591 of them)
> of the form
>
> ** (./hello.exe:3352): WARNING **: Could not load class from token
> 0x0100002e in C:\cygwin\home\fjh\ws\hermes\samples\mono_test\array.dll
> ...
> ... lots more like that ...
> ...
> ** (./hello.exe:3304): WARNING **: Could not load class from token
> 0x01000072 in C:\cygwin\home\fjh\ws\hermes\samples\mono_test\io.dll
Ok, I fixed a couple of issues related to type resolution in my tree.
There are still two issues:
1) in the files you provided a type is referenced, but I could not find
it defined in any module:
[mercury]mercury.private_builtin.ref_1
I guess a file is missing from the tarball.
2) references to nested types are encoded with (for example):
namespace = mercury.list
name = list_1/[|]_2
I always thought that was not allowed and that you should use a typeref
to the parent with:
namespace = mercury.list
name = list_1
and a typeref to the typeref with:
namespace =
name = [|]_2
I guess we'll have to handle also this special case.
> I also tried using the `ilasm' on the IL generated by the Mercury compiler.
> That failed too, with the following error message:
Our ilasm is not yet functional enough for many IL sources.
Thanks!
lupus
--
-----------------------------------------------------------------
lupus@debian.org debian/rules
lupus@ximian.com Monkeys do it better