I second Mike on this. I think it is cardinal to the wine project. If wine fails to correctly address this in the future (accept C++ projects) there will come a time that some one will split wine yet again. winehq - some windows implementation. wine++ - winehq + C++ projects for a more robust wine.
C++ ABI changes does not concern wine nor windows. Actually COM was defined exactly in the manner that will not be affected by C++ ABI. One can say that COM is the lowest common denominator of the C++ compilers. GCC has been producing COM compatible ABI for years. On windows as well as in Linux and other x86 platforms. The Mozilla project has been counting on this since the beginning. It is not a theoretically if. It is working today. I have MFC and ATL/WTL compiled under Linux fully supporting COM-controls. Windows binaries that is. Linux compiled controls I don't yet have because of the TLBS but I'll get to it eventually. Actually wine headers today support C++ compilation for all Interface declarations. Also the WDL will produce C++ compatible headers.
About mixing of C++ objects with COM Objects it is done exactly has on windows. If you stick to the COM rules you can do what you like (internally). If you are concerned with C++ run-time like STL and GLIBC++, than C++ programmers know these problems and how to avoid them. There are bigger projects than wine that has written the books about these issues. One just has to follow the rules and avoid the mistakes of the past. These things happen in C too. Just now we had an issue with RH 9 new GLIBC and a special code was written to detect that in runtime. The maintainer of the C++ code will have to watch for these things. And they will be discovered and patched soon enough.
Lionel Ulmer wrote:
On Fri, Dec 05, 2003 at 10:45:26AM +0000, Mike Hearn wrote:
- Support for it is bad in the free software toolchain (no longer an
issue)
- Not as many people know it as C (but even fewer know assembly and we
use that all over the place)
- Windows is written in C (it's also written in c++ though, esp the more
modern parts).
Have I missed any other problems with it?
Well, the most common concern about it is the continuous ABI changes in the C++ libraries... Which were promised to be ended with GCC 3.3 but seems still to shift a bit.
After, is there a way in the 'free' C++ compiler to match COM objects with C++ objects ?
Lionel