Since a WineLib application is a Windows application that is compiled under 
Unix/Linux as a shared library it needs to be started differently than other
applications. The WineLib application is started as any other Windows
application running under Wine using the wine command. You cannot simply link 
in libwine (gcc myapp.c -lwine) to use Win32 functions.

In order to use WineLib/Win32 functions under Mono I have created a small
"stub" application that embeds the Mono engine inside the WineLib application.
This is basically a replacement for the "mono" command that can be used
to call the Win32 API (using WineLib) within an application written for Mono.

To get started I suggest installing Wine and Mono first if they are not
already installed. I am usually using the latest Wine snapshots built from 
source and installed under /usr/local. Also be sure to build/use a version of 
Mono with garbage collection disabled as there is a problem using WineLib with 
garbage collection enabled (check the mono-list archives for this discussion). 
You can disable garbage collection when building mono by adding --with-gc=none 
to the configure command. In the mono directory I build mono as:
     ./configure --with-gc=none

In the WINELib makefile you may have set these to the appropriate files and/or
paths on your PC: 

X11R6_INCLUDE=/usr/X11R6/include
WINE_INCLUDE=/usr/local/include/wine
WINE_LIB=/usr/local/lib/wine
LIBMONO=/usr/local/lib/libmono.a

If you type make from the mcs/class/System.Windows.Forms/WINELib
directory it should build: 

System.Windows.Forms.dll - 
The current (if largely incomplete) Windows Forms package. 

FormTest.exe, NativeWindowTest.exe, Test.exe - 
Test applications which link to and tests the System.Windows.Forms.dll 

monostub.exe.so - 
The WineLib application that starts the Mono/WineLib application. This
small WineLib application embeds the Mono JIT engine allowing any Mono
application running in it access to WineLib/Win32 function calls. 

Before starting any of the applications set the LD_LIBRARY_PATH to the
current directory (so DllImport can find the monostub.exe.so library):
        export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.

To start any of the applications you type (from the WINELib directory): 
        wine monostub.exe.so mono-winelibapp.exe 

John Sohn
jsohn@columbus.rr.com
