Added some MFC documentation (with the help of Francois Gouget).
This commit is contained in:
parent
ef3d022c62
commit
c4a101c9fc
|
@ -138,13 +138,80 @@
|
||||||
<sect1 id="mfc-compiling">
|
<sect1 id="mfc-compiling">
|
||||||
<title id="mfc-compiling.title">Compiling the MFC</title>
|
<title id="mfc-compiling.title">Compiling the MFC</title>
|
||||||
<para>
|
<para>
|
||||||
Things to disable,
|
Here is a set of recommendations for getting the MFC compiled with
|
||||||
why we have to disable them (lack of Wine support),
|
WineLib:
|
||||||
where things don't compile,
|
</para>
|
||||||
why,
|
<para>
|
||||||
how to solve it,
|
We recommend running winemaker in
|
||||||
what to put in the Makefile,
|
'<option>--interactive</option>' mode to specify the right
|
||||||
maybe try to point to a place with a ready-made makefile...
|
options for the MFC and the ATL part (to get the include paths
|
||||||
|
right, to not consider the MFC MFC-based, and to get it to
|
||||||
|
build libraries, not executables).
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
Then when compiling it you will indeed need a number of
|
||||||
|
<literal>_AFX_NO_XXX</literal> macros. But this is not enough
|
||||||
|
and there are other things you will need to
|
||||||
|
'<literal>#ifdef</literal>-out'. For instance Wine's richedit
|
||||||
|
support is not very good. Here are the AFX options I use:
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
<programlisting>
|
||||||
|
#define _AFX_PORTABLE
|
||||||
|
#define _FORCENAMELESSUNION
|
||||||
|
#define _AFX_NO_DAO_SUPPORT
|
||||||
|
#define _AFX_NO_DHTML_SUPPORT
|
||||||
|
#define _AFX_NO_OLEDB_SUPPORT
|
||||||
|
#define _AFX_NO_RICHEDIT_SUPPORT
|
||||||
|
</programlisting>
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
You will also need custom ones for
|
||||||
|
<function>CMonikerFile</function>, <function>OleDB</function>,
|
||||||
|
<function>HtmlView</function>, ...
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
We recommend using Wine's msvcrt headers (<literal>-isystem
|
||||||
|
$(WINE_INCLUDE_ROOT)/msvcrt</literal>), though it means you
|
||||||
|
will have to temporarily disable winsock support
|
||||||
|
(<literal>#ifdef</literal> it out in
|
||||||
|
<filename>windows.h</filename>).
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
You should use g++ compiler more recent than g++ 2.95. g++
|
||||||
|
2.95 does not support unnamed structs while the more recent
|
||||||
|
ones do, and this helps a lot. Here are the options worth
|
||||||
|
mentioning:
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
<literal>-fms-extensions</literal> (helps get more code
|
||||||
|
to compile)
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
<literal>-fshort-wchar -DWINE_UNICODE_NATIVE</literal>
|
||||||
|
(helps with Unicode support)
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
<literal>-DICOM_USE_COM_INTERFACE_ATTRIBUTE</literal>
|
||||||
|
(to get the COM code to work)
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
When you first reach the link stage you will get a lot of
|
||||||
|
undefined symbol errors. To fix these you will need to go back
|
||||||
|
to the source and <literal>#ifdef</literal>-out more code
|
||||||
|
until you reach a 'closure'. There are also some files that
|
||||||
|
don't need to be compiled.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
Maybe we will have ready-made makefile here someday...
|
||||||
</para>
|
</para>
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue