BuildingMSVCStandard
Contents
Code changes
What hides these issues when using Professional is more agressive inlining. Even if they all manifest with standard, they are actually separate and distinct issues. I've summarized the changes here and I'll add a patch once I've verified the impact of these changes. You have to do these changes before compiling.
Update: These are all the changes required to compile OO.o. I'm now working on a patch. --KaiB 22:30, 13 January 2006 (CET)
Update: These or different changes with the same effect are implemented in m156 and will also be included in OOo 2.0.2. --Vq 14:41, 13 February 2006 (EST)
sj2/util/makefile.mk: add the SVTOOLLIB library
SHL1STDLIBS= \ $(VCLLIB) \ $(UNOTOOLSLIB) \ $(TOOLSLIB) \ $(CPPULIB) \ $(SALLIB) \ +$(SVTOOLLIB)
The required library was just missing from the makefile.
basic/source/apps/dialogs.cxx
1. Comment out the lines shown here starting from line 43:
//HACK( #define protected public ) //#define protected public // Kleine Schweinerei um an FreeResource ranzukommen #ifndef _TOOLS_RC_HXX //autogen #include <tools/rc.hxx> #endif //#undef protected
2. Comment out the line shown here (line 238):
aConfig.EnablePersistence( FALSE ); // aTabCtrl.FreeResource(); FreeResource();
Redefining the reserved keyword in spot 1 results in the linker trying to find a public FreeResource method while the actual one compiled into the library is protected. The error pops up in a totally unrelated module and halts the build. Spot 2 is the place that requires this workaround.
In Issue 58352 there is a commit log of the changes needed to solve the problem and not workaround it. The fix is on CWS warnings01. (Gregor Hartmann is the basic/source/app maintainer)
tools/source/stream/stream.cxx (line 66): Define ENABLE_STRING_STREAM_OPERATORS to compile the stream operators into the library:
#define ENABLE_BYTESTRING_STREAM_OPERATORS +#define ENABLE_STRING_STREAM_OPERATORS #include <stream.hxx>
Simple change to ensure that the deprecated stream functions are still compiled into the library. The proper long term fix is to change the call sites and remove the requirement altogether.