[Mono-list] Compile vs. run

Chad Robinson crj at lucubration.com
Thu Feb 2 19:24:10 EST 2006


When I do this:

s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);

this happens:

** (NetDump.exe:25323): WARNING **: Missing member SetSocketOption in type 
Socket, assembly /usr/lib/mono/gac/System/2.0.0.0__b77a5c561934e089/System.dll

Unhandled Exception: System.MissingMethodException: Method not found: 
'System.Net.Sockets.Socket.SetSocketOption'.

The problem is the System.dll reference, somehow. I can run an EXE compiled in 
Visual Studio fine in Mono. But if I run an EXE that calls a DLL that calls a 
system function, then I have trouble. The above is in a DLL (of mine) 
referenced by the EXE (of mine).

Both the DLL and EXE are compiled in Windows. When I run it, I get the above. 
When I compile in Linux using the same code, it works fine.

Is this by design, or a known issue, or am I simply doing something wrong? If 
the former, no problem - I'll just do a separate build on Linux for 
executables being sent to Linux systems. But if it's ME, I'd obviously love to 
know so I can fix it. =)

It looks like it might be something to do with versioning, but that doesn't 
make too much sense to me - the new Socket() constructor should be there, too, 
and that works fine. I'm a versioning novice, so maybe I'm wrong.

Thanks,
Chad


More information about the Mono-list mailing list