Remove some obsolete and/or redundant info.
This commit is contained in:
parent
e1a9b10f51
commit
4897535977
|
@ -19,16 +19,10 @@ Table of Contents
|
||||||
|
|
||||||
I. Introduction: Wine vs. WineLib
|
I. Introduction: Wine vs. WineLib
|
||||||
|
|
||||||
II. Legal Issues
|
|
||||||
|
|
||||||
III. How Much Work?
|
|
||||||
|
|
||||||
IV. File Format Conversion
|
IV. File Format Conversion
|
||||||
|
|
||||||
V. Compiling A Simple Win32 Program
|
V. Compiling A Simple Win32 Program
|
||||||
|
|
||||||
VI. Compiling A Win32 Program With Resources
|
|
||||||
|
|
||||||
VII. DLLs
|
VII. DLLs
|
||||||
A. Windows executable and Windows DLL.
|
A. Windows executable and Windows DLL.
|
||||||
B. Windows executable and WineLib DLL.
|
B. Windows executable and WineLib DLL.
|
||||||
|
@ -39,18 +33,6 @@ VIII. How to use MFC
|
||||||
A. Using a native MFC DLL
|
A. Using a native MFC DLL
|
||||||
B. Compiling MFC
|
B. Compiling MFC
|
||||||
|
|
||||||
VIII. Trademarks
|
|
||||||
Windows 3.x, Windows 95, Windows 98, Windows NT are trademarks of
|
|
||||||
Microsoft Corporation.
|
|
||||||
|
|
||||||
Unix is a trademark of ???? FIXME: who has the trademark this week?
|
|
||||||
|
|
||||||
CrypKey is a trademark of Kenonic Controls Ltd.
|
|
||||||
|
|
||||||
FIXME: Codewright copyright ???
|
|
||||||
|
|
||||||
All other trademarks are the property of their respective owners.
|
|
||||||
|
|
||||||
=====================================================================
|
=====================================================================
|
||||||
|
|
||||||
I. Introduction: Wine vs. WineLib
|
I. Introduction: Wine vs. WineLib
|
||||||
|
@ -160,96 +142,7 @@ are used in several places in Wine and WineLib to provide glue between
|
||||||
windows code and code for non-windows compilers. WineLib provides a
|
windows code and code for non-windows compilers. WineLib provides a
|
||||||
tool called winebuild in the tools/winebuild directory that converts a
|
tool called winebuild in the tools/winebuild directory that converts a
|
||||||
spec file into a C file that can be compiled and linked with the
|
spec file into a C file that can be compiled and linked with the
|
||||||
windows source files. If you examine hello2.spec, you will see the
|
windows source files. ...
|
||||||
following:
|
|
||||||
|
|
||||||
name hello2
|
|
||||||
mode guiexe
|
|
||||||
type win32
|
|
||||||
|
|
||||||
import user32.dll
|
|
||||||
import kernel32.dll
|
|
||||||
import ntdll.dll
|
|
||||||
|
|
||||||
Information on the complete format of the spec file can be found in
|
|
||||||
<wine>/tools/winebuild/README. Name is the name of the
|
|
||||||
application. Mode is the type of "glue" that winebuild needs to
|
|
||||||
create. Possible modes are 'dll' for a library, 'cuiexe' for a console
|
|
||||||
application, and 'guiexe' for a regular graphical application. Type is
|
|
||||||
the type of API, either win32 or win16. Win16 is supported only in
|
|
||||||
Wine, not WineLib, so you should use win32. Import is a dll that must
|
|
||||||
be loaded for the program to execute.
|
|
||||||
|
|
||||||
During compilation of the hello2 executable, the following command is
|
|
||||||
executed.
|
|
||||||
|
|
||||||
LD_LIBRARY_PATH="..:$LD_LIBRARY_PATH" \
|
|
||||||
../tools/winebuild/winebuild -fPIC -L ../dlls -sym hello2.o \
|
|
||||||
-o hello2.spec.c -spec hello2.spec
|
|
||||||
|
|
||||||
The program winebuild will generate the output file hello2.spec.c (option
|
|
||||||
-o hello2.spec.c) from the spec file hello2.spec (option -spec
|
|
||||||
hello2.spec). The option -fPIC specifies that winebuild should generate
|
|
||||||
position independent code and is only necessary for building shared
|
|
||||||
library files (.so files). It is not needed when building the main
|
|
||||||
executable spec file, but since there is no assembly code generated
|
|
||||||
for the main executable, it doesn't make any difference anyway. [5]
|
|
||||||
|
|
||||||
The winebuild program is used in several places in Wine as well as
|
|
||||||
WineLib; however, only the -spec option will be used in WineLib. The
|
|
||||||
output file hello2.spec.c contains the glue code to initialize WineLib
|
|
||||||
and call WinMain().
|
|
||||||
|
|
||||||
In order to run hello2, we will compile the code into a shared library
|
|
||||||
(hello2.so) and create a symbolic link (hello2) with the wine
|
|
||||||
executable with the following steps.
|
|
||||||
|
|
||||||
gcc -c -I. -I. -I../include -I../include -g -O2 -Wall -fPIC -DSTRICT \
|
|
||||||
-D_REENTRANT -I/usr/X11R6/include -o hello2.o hello2.c
|
|
||||||
|
|
||||||
to compile the windows program itself and
|
|
||||||
|
|
||||||
gcc -c -I. -I. -I../include -I../include -g -O2 -Wall -fPIC -DSTRICT \
|
|
||||||
-D_REENTRANT -I/usr/X11R6/include -o hello2.spec.o hello2.spec.c
|
|
||||||
|
|
||||||
to compile the spec file and the glue code. Finally,
|
|
||||||
|
|
||||||
gcc -shared -Wl,-rpath,/usr/local/lib -Wl,-Bsymbolic -o hello2.so \
|
|
||||||
hello2.o hello2.spec.o -L.. -lwine -lncurses -lm -lutil -ldl
|
|
||||||
|
|
||||||
links the compiled files into a shared library.
|
|
||||||
|
|
||||||
FIXME: -D_REENTRANT why?
|
|
||||||
FIXME: explain compiler options
|
|
||||||
FIXME: explain linker options
|
|
||||||
|
|
||||||
All of the steps are automated with the makefile, so "make hello2.so"
|
|
||||||
will execute all of the steps for you. A final step is "make hello2",
|
|
||||||
which creates a symbolic link from hello2 to the wine executable. Now,
|
|
||||||
when "./hello2" is run, the wine executable sees it was called by the
|
|
||||||
name "hello2" and loads the shared library "hello2.so" and executes
|
|
||||||
the program.
|
|
||||||
|
|
||||||
THE INFO BELOW IS OUT OF DATE (28-Dec-2000)
|
|
||||||
|
|
||||||
Thus, you now have the basics of compiling a simple windows
|
|
||||||
program. There are two more things to learn for compiling more complex
|
|
||||||
windows programs: windows resources and DLL dependencies. Window
|
|
||||||
resources are described in the next section. DLL dependencies are
|
|
||||||
handled by linker magic with windows compilers. Thus, in WineLib, you
|
|
||||||
will need to provide information about which DLLs your program
|
|
||||||
depends. This information is given in the spec file. For example, if
|
|
||||||
our hello2 program had a .wav file that it played, it would need the
|
|
||||||
multi-media DLL winmm. Our spec file would then be
|
|
||||||
|
|
||||||
name hello2
|
|
||||||
mode guiexe
|
|
||||||
type win32
|
|
||||||
init WinMain
|
|
||||||
import winmm
|
|
||||||
|
|
||||||
If you need to list multiple DLLs, then the import specification can
|
|
||||||
appear multiple times, one line per imported DLL.
|
|
||||||
|
|
||||||
VII. DLLs
|
VII. DLLs
|
||||||
|
|
||||||
|
@ -461,75 +354,6 @@ VIII. How to use MFC
|
||||||
|
|
||||||
FIXME: to be continued.
|
FIXME: to be continued.
|
||||||
|
|
||||||
=====================================================================
|
|
||||||
References
|
|
||||||
|
|
||||||
Until this HOWTO is complete, I will document who gives me what
|
|
||||||
information.
|
|
||||||
|
|
||||||
Reference [1]
|
|
||||||
From: Patrik Stridvall <ps@leissner.se>
|
|
||||||
To: "'wilbur.dale@lumin.nl'" <wilbur.dale@lumin.nl>,
|
|
||||||
Date: Mon, 5 Jun 2000 14:25:22 +0200
|
|
||||||
|
|
||||||
First of all WineLib suppport for Win16 has been discontinued
|
|
||||||
for quite some time, because:
|
|
||||||
|
|
||||||
1. It is difficult for us to support and it is impossible
|
|
||||||
to do so perfectly without special compiler support,
|
|
||||||
because of memory layout issues. For example Win16 int
|
|
||||||
is 16-bit and data is aligned 16-bit.
|
|
||||||
2. It is in almost all cases easier to port a
|
|
||||||
Win16 application to Win32.
|
|
||||||
|
|
||||||
A minor detail, I personally would prefer that Wine and WineLib
|
|
||||||
was always used in the uppercase W and uppercase L variant,
|
|
||||||
instead of, as in your document, sometime one variant, sometimes
|
|
||||||
another.
|
|
||||||
|
|
||||||
Reference [2]
|
|
||||||
|
|
||||||
The exact options for controlling error messages mentioned in the
|
|
||||||
reference are apparently incorrect, but may have been correct for some
|
|
||||||
earlier version of Wine.
|
|
||||||
|
|
||||||
From: michael cardenas <mbc@deneba.com>
|
|
||||||
To: wilbur.dale@lumin.nl
|
|
||||||
Date: Mon, 5 Jun 2000 13:19:34 -0400
|
|
||||||
|
|
||||||
a few things you should mention...
|
|
||||||
|
|
||||||
- you can compile resources as a dll under windows and then load the dll
|
|
||||||
with wine. That's what we do for canvas. This is probably not ideal, but
|
|
||||||
most of my problems porting were in the code. We very seldomly have to
|
|
||||||
change the resources for the porting process. But wrc does work for most
|
|
||||||
cases...
|
|
||||||
|
|
||||||
- the error messages can be turned off or turned up with options to
|
|
||||||
configure like --enable-trace-msgs=wireoff or --enable-trace-msgs=wireon .
|
|
||||||
Take a look at configure.
|
|
||||||
|
|
||||||
- you probably want to compile your WineLib with --disable-debugger, at
|
|
||||||
least for the release version of your app.
|
|
||||||
|
|
||||||
Reference [3]
|
|
||||||
http://fgouget.free.fr/wine/winelib-en.shtml
|
|
||||||
|
|
||||||
Reference [4]
|
|
||||||
Date: Wed, 21 Jun 2000 10:34:10 +0200
|
|
||||||
From: Rob Carriere <rob.carriere@lumin.nl>
|
|
||||||
To: Wilbur N Dale <wilbur.dale@lumin.nl>
|
|
||||||
Subject: WineLib-HOWTO comments
|
|
||||||
|
|
||||||
Hello Wilbur,
|
|
||||||
|
|
||||||
Some picking of nits. It reads right well.
|
|
||||||
|
|
||||||
Some of Windows xyz are registered trade marks, other are vanilla:
|
|
||||||
Microsoft: Registered
|
|
||||||
Windows NT: Registered
|
|
||||||
Windows (95,98): plain
|
|
||||||
|
|
||||||
A Windows compiler does NOT generate a fake main. Instead, the
|
A Windows compiler does NOT generate a fake main. Instead, the
|
||||||
executable file format provides for 2 (NE) or 3 (PE) entry points.
|
executable file format provides for 2 (NE) or 3 (PE) entry points.
|
||||||
One of these is your program, the other(s) are normally filled with
|
One of these is your program, the other(s) are normally filled with
|
||||||
|
@ -547,86 +371,6 @@ run time libs and DLLs occur at this level.
|
||||||
Line 86: I only need to know how compile MFC if I use it... :-)
|
Line 86: I only need to know how compile MFC if I use it... :-)
|
||||||
|
|
||||||
|
|
||||||
Best regards,
|
|
||||||
Rob mailto:rob.carriere@lumin.nl
|
|
||||||
|
|
||||||
Reference [5]
|
|
||||||
To: wilbur.dale@lumin.nl
|
|
||||||
Subject: Re: tool/build questions
|
|
||||||
From: Alexandre Julliard <julliard@winehq.com>
|
|
||||||
Date: 13 Jun 2000 20:06:23 -0700
|
|
||||||
|
|
||||||
"Wilbur N. Dale" <wilbur.dale@lumin.nl> writes:
|
|
||||||
|
|
||||||
> 2. tools/build for WineLib users -- is there ever a need to not specify -pic?
|
|
||||||
|
|
||||||
-pic is only necessary for building .so files, so it's not needed when
|
|
||||||
building the main executable spec file (but since there is no assembly
|
|
||||||
code generated for the main exe it doesn't make any difference anyway).
|
|
||||||
|
|
||||||
--
|
|
||||||
Alexandre Julliard
|
|
||||||
julliard@winehq.com
|
|
||||||
|
|
||||||
Reference [6]
|
|
||||||
Wine Weekly News #51 (2000 Week 28)
|
|
||||||
|
|
||||||
Events, progress, and happenings in the Wine community for
|
|
||||||
July 10, 2000.
|
|
||||||
|
|
||||||
Uwe Bonnes and Ove Kaven also reminded of some tools to generate under
|
|
||||||
Linux some Windows executables:
|
|
||||||
* Cygwin/Mingw: as native Linux apps
|
|
||||||
* LCC-Win32: run with the help of Wine
|
|
||||||
* Borland C++ 5.5: command line version available for free (after
|
|
||||||
registering to Borland users' database)
|
|
||||||
|
|
||||||
=====================================================================
|
|
||||||
|
|
||||||
The information included here is from various Wine-devel posting and
|
|
||||||
private e-mails. I am including them so that any one starting on MFC
|
|
||||||
will have some documentation. Glean what you can and good luck.
|
|
||||||
|
|
||||||
Before I write more detailed info on compiling MFC I have three
|
|
||||||
questions. The info I have mentions three problems:
|
|
||||||
|
|
||||||
1. Wine header files---what is the status of this? Do changes need
|
|
||||||
to be made in the headers and if so, do I submit the changes back
|
|
||||||
into Wine cvs? Do the changes need #ifdef for C vs. C++
|
|
||||||
compilation?
|
|
||||||
|
|
||||||
Francois Gouget <fgouget@psn.net> has been doing a lot of work in
|
|
||||||
this area. It should be a lot easier to compile using C++ now and to
|
|
||||||
compile MFC.
|
|
||||||
|
|
||||||
2. DOS format files <CR/LF> and no case distinction in
|
|
||||||
filenames. Do the extensions Corel made to gcc 2.95 handle this?
|
|
||||||
If so, how?
|
|
||||||
|
|
||||||
3. Microsoft extensions to the C++ syntax. Do the extensions Corel
|
|
||||||
made to gcc 2.95 handle this? If so, how?
|
|
||||||
|
|
||||||
If you have info that needs to be added, send me email at
|
|
||||||
<wilbur.dale@lumin.nl> and I will add it.
|
|
||||||
|
|
||||||
=====================================================================
|
|
||||||
|
|
||||||
THANKS
|
|
||||||
|
|
||||||
Most of the information in this file came from postings on
|
|
||||||
<Wine-devel@Winehq.com> and from private e-mails. The following people
|
|
||||||
contributed information for this document and I thank them for their
|
|
||||||
time and effort in answering my questions. I also want to thank them
|
|
||||||
for encouraging me to attack the MFC problem.
|
|
||||||
|
|
||||||
CONTRIBUTERS:
|
|
||||||
|
|
||||||
Damyan Ognyanoff <Damyan@rocketmail.com>
|
|
||||||
Gavriel State <gav@magmacom.com>
|
|
||||||
Ian Schmidt <ischmidt@cfl.rr.com>
|
|
||||||
Jeremy White <jwhite@codeweavers.com>
|
|
||||||
|
|
||||||
|
|
||||||
From: Damyan Ognyanoff <Damyan@rocketmail.com>
|
From: Damyan Ognyanoff <Damyan@rocketmail.com>
|
||||||
Subject: Re: Wine MFC info request
|
Subject: Re: Wine MFC info request
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue