Here is a set of recommendations for getting the MFC compiled with Winelib:
We recommend running winemaker in
--interactive mode to specify the right
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).
Then when compiling it you will indeed need a number of _AFX_NO_XXX macros. But this is not enough and there are other things you will need to '#ifdef-out'. For instance Wine richedit support is not very good. Here are the AFX options I use:
#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
You will also need custom ones for
We recommend using Wine msvcrt headers (
$(WINE_INCLUDE_ROOT)/msvcrt), though it means you
will have to temporarily disable winsock support
(#ifdef it out in
You should use g++ compiler more recent than 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:
-fms-extensions (helps get more code to compile)
-fshort-wchar -DWINE_UNICODE_NATIVE (helps with Unicode support)
-DICOM_USE_COM_INTERFACE_ATTRIBUTE (to get the COM code to work)
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 #ifdef-out more code until you reach a "closure". There are also some files that don't need to be compiled.
Maybe we will have ready-made makefile here someday...