PDA

Visualizza la versione completa : [c++]memoria e compilatore


giuseppe500
21-07-2013, 06:16
ciao.
Ho sputato sangue per creare un file di mappatura da un .xsd con xsd code syntesis, adesso che non ci sono piu errori non mi crea l'exe o la dll!


c:\ifc\codesynthesis xsd 3.3\include\xsd\cxx\tree\type-serializer-map.txx(530): fatal error C1001: An internal error has occurred in the compiler.
1> (compiler file 'msc1.cpp', line 1443)
1> To work around this problem, try simplifying or changing the program near the locations listed above.
1> Please choose the Technical Support command on the Visual C++
1> Help menu, or open the Technical Support help file for more information
1> c:\ifc\codesynthesis xsd 3.3\include\xsd\cxx\tree\type-serializer-map.txx(542) : see reference to function template instantiation 'void xsd::cxx::tree::serializer_impl<T>(xercesc_3_1::DOMElement &,const xsd::cxx::tree::type &)' being compiled
1> with
1> [
1> T=ifcXML::IFC2x3::FINAL::IfcTextFontSelect
1> ]
1> c:\ifc\codesynthesis xsd 3.3\include\xsd\cxx\tree\type-serializer-map.txx(538) : while compiling class template member function 'xsd::cxx::tree::type_serializer_initializer<id,C,T>::type_serializer_initializer(const C *,const C *)'
1> with
1> [
1> id=0,
1> C=char,
1> T=ifcXML::IFC2x3::FINAL::IfcTextFontSelect
1> ]
1> c:\ifc\dllif\consoleapplication1\consoleapplicatio n1\ifc\ifc2x3.cxx(439635) : see reference to function template instantiation 'xsd::cxx::tree::type_serializer_initializer<id,C,T>::type_serializer_initializer(const C *,const C *)' being compiled
1> with
1> [
1> id=0,
1> C=char,
1> T=ifcXML::IFC2x3::FINAL::IfcTextFontSelect
1> ]
1> c:\ifc\dllif\consoleapplication1\consoleapplicatio n1\ifc\ifc2x3.cxx(439635) : see reference to class template instantiation 'xsd::cxx::tree::type_serializer_initializer<id,C,T>' being compiled
1> with
1> [
1> id=0,
1> C=char,
1> T=ifcXML::IFC2x3::FINAL::IfcTextFontSelect
1> ]
1>
1>Build FAILED.


ho notato che la memoria occupata cresce sempre di piu fino ad arrivare a 4 gb, che il mio massimo su questa macchina e si pianta il compilatore e esce un popup che dice se voglio inviare una segnalazione a microsoft.
non riesco a capire :dh:

shodan
21-07-2013, 10:55
Prova a semplificare le espressioni con qualche typedef.
Ad es.


typedef ifcXML::IFC2x3::FINAL::IfcTextFontSelect g500_IfcTextFontSelect;

oppure inserisci in un namespace pi corto.


namespace g500 {
using ifcXML::IFC2x3::FINAL::IfcTextFontSelect;
using xsd::cxx::tree::serializer_impl;
using xsd::cxx::tree::type;
}

...

g500::serializer_impl<T>(xercesc_3_1:DOMElement &,const g500::type & )



Purtroppo un errore del genere chiaramente una limitazione (pi un bug a dire il vero) del compilatore e occorre procedere a tentativi, semplificando dichiarazione troppo contorte.

giuseppe500
22-07-2013, 06:17
grazie Shodan sto cercando di mettere una pezza come mi hai consigliato, ma perch questo?
a cosa dovuto al codice troppo grosso?
ho un file sorgente da 30MB, avevo anche degli errori, adesso li ho sistemati e sto procedendo come mi hai detto.

MItaly
22-07-2013, 13:53
30 MB di sorgente tutto template? Non ti pare di star esagerando? :stordita:

Loading