OpenWatcom STLport Problem
-
Hallo!
Wenn ich versuche ein einfaches Programm mit OpenWatcom und STLport zu compilieren, sagt er:
D:\watcom>SET PATH=D:\watcom\BINNT;D:\watcom\BINW;C:\WINDOWS\system32;C:\WINDOWS ;C:\WINDOWS\System32\Wbem;D:\dm\bin;D:\MinGW\bin;D:\mplayer;D:\WinAVR\bin;D:\ema cs\bin;D:\CBuilderX\bin D:\watcom>SET WATCOM=D:\watcom D:\watcom>SET EDPATH=D:\watcom\EDDAT D:\watcom>SET INCLUDE=D:\watcom\H;D:\watcom\H\NT;D:\watcom\h\STLport\stlport; D:\watcom>wpp386 test.cpp Open Watcom C++32 Optimizing Compiler Version 1.3 Portions Copyright (c) 1989-2002 Sybase, Inc. All Rights Reserved. Source code is available under the Sybase Open Watcom Public License. See http://www.openwatcom.org/ for details. D:\watcom\h\STLport\stlport\stl\_iterator_base.h(228): Error! E135: col(17) 'fri end', 'virtual' or 'inline' modifiers may only be used on functions D:\watcom\h\STLport\stlport\stl\_iterator_base.h(228): Note! N393: col(17) inclu ded from D:\watcom\h\STLport\stlport\stl\_algobase.h(56) D:\watcom\h\STLport\stlport\stl\_iterator_base.h(228): Note! N393: col(17) inclu ded from D:\watcom\h\STLport\stlport\vector(37) D:\watcom\h\STLport\stlport\stl\_iterator_base.h(228): Note! N393: col(17) inclu ded from test.cpp(1) D:\watcom\h\STLport\stlport\stl\_iterator_base.h(228): Error! E408: col(17) func tion templates can only name functions D:\watcom\h\STLport\stlport\stl\_iterator_base.h(228): Error! E006: col(17) synt ax error; probable cause: missing ';' D:\watcom\h\STLport\stlport\stl\_iterator_base.h(322): Error! E135: col(11) 'fri end', 'virtual' or 'inline' modifiers may only be used on functions D:\watcom\h\STLport\stlport\stl\_iterator_base.h(322): Error! E408: col(11) func tion templates can only name functions D:\watcom\h\STLport\stlport\stl\_iterator_base.h(322): Error! E042: col(11) symb ol 'ptrdiff_t' already defined D:\watcom\h\STLport\stlport\stl\_iterator_base.h(228): Note! N392: col(8) defini tion: 'int ptrdiff_t' D:\watcom\h\STLport\stlport\stl\_iterator_base.h(322): Error! E006: col(1) synta x error; probable cause: missing ';' D:\watcom\h\STLport\stlport\stl\_algobase.h(149): Error! E029: col(13) symbol 'm emmove' has not been declared D:\watcom\h\STLport\stlport\stl\_algobase.h(183): Error! E178: col(24) const obj ect must be initialized D:\watcom\h\STLport\stlport\stl\_algobase.h(183): Error! E006: col(19) syntax er ror; probable cause: missing ';' D:\watcom\h\STLport\stlport\stl\_algobase.h(184): Error! E029: col(11) symbol '_ Num' has not been declared D:\watcom\h\STLport\stlport\stl\_algobase.h(345): Error! E029: col(3) symbol 'me mset' has not been declared D:\watcom\h\STLport\stlport\stl\_algobase.h(351): Error! E029: col(3) symbol 'me mset' has not been declared D:\watcom\h\STLport\stlport\stl\_algobase.h(356): Error! E029: col(3) symbol 'me mset' has not been declared D:\watcom\h\STLport\stlport\stl\_algobase.h(464): Error! E029: col(24) symbol 'm emcmp' has not been declared D:\watcom\h\STLport\stlport\stl\_algobase.h(493): Error! E178: col(26) const obj ect must be initialized D:\watcom\h\STLport\stlport\stl\_algobase.h(493): Error! E006: col(19) syntax er ror; probable cause: missing ';' D:\watcom\h\STLport\stlport\stl\_algobase.h(494): Error! E042: col(26) symbol 'p trdiff_t' already defined D:\watcom\h\STLport\stlport\stl\_algobase.h(493): Note! N392: col(9) definition: 'int const ptrdiff_t' in 'int __lexicographical_compare_3way( unsigned char con st *, unsigned char const *, unsigned char const *, unsigned char const * )' D:\watcom\h\STLport\stlport\stl\_algobase.h(494): Error! E006: col(19) syntax er ror; probable cause: missing ';' D:\watcom\h\STLport\stlport\stl\_algobase.h(495): Error! E029: col(58) symbol '_ _len1' has not been declared D:\watcom\h\STLport\stlport\stl\_algobase.h(497): Error! E133: col(37) too many errors: compilation aborted test.cpp: no lines, included 5800, no warnings, 21 errors
Ich benutze STLport-4.6.2.
test.cpp:
#include<vector> main(){}
Was tun?
-
vielleicht mag watcom kein
main(){}
versuche das korrekte
int main() {}
K.
-
Warum benutzt du diesen scheiss Compiler? Zwingt dich jemand dazu? Freiwillig würd ich den nicht nehmen.
-
OpenWatcom ist wohl noch nicht ISO C++ kompatibel (nach der aktuellen Norm).
Ist allerdings auch kein Wunder, da OpenWatcom ja zunaechst das Ziel hat, das Watcom Compiler Projekt fortzufuehren (nachdem Sybase es eingestellt hatte).
Es gibt moeglicherweise aeltere Versionen der STL, die man mit dem Watcom verwenden kann (die noch keine neueren Konstruktionen verwenden).
Andernfalls muss man halt entweder seine eigenen Klassen schreiben, oder die benoetigten Teile der STL portieren. (waere auch eine gute Contribution zum OpenWatcom Projekt, bist sicher nicht der Einzige mit dem Problem!
)
Der OpenWatcom C++ Compiler hat einige Vorteile gegenueber anderen Compilern: Er hat einen guten eingebauten Optimizer, er kann Assembler-Inline-Makros in C/C++, er hat benutzerdefinierbare Calling-Conventions, und das beste ist: Er ist kostenlos!