hallo allemaal,
ik heb een zeer vaag linker probleem. Even een situatie schets: ik heb een Main.h file met een bijbehorende Main.cpp. deze heeft op het moment alleen een main functie en hij trekt de header MapParser.h binnen. Deze MapParser.h bevat een MapParser class net als in de bijbehorende file MapParser.cpp. Deze header trekt op zijn beurt weer een Engine.h file binnen. Deze bevat een hele zooi aan templated classes. Verder trekken deze files allemaal alleen standard libraries binnen en ik gebruik overal header guards.
Dan nu het probleem: als ik dit compile krijg ik een link error dat 1 specifieke class (die ik niet aanroep is namelijk een error class die ik nog even neit gebruik) al gedefined is in MapParser.obj (error doet zich voor in Main.obj).
Dit is raar omdat ik ten eerste die hele class niet gebruik en ten tweede omdat die hele engine maar 1 keer binnengetrokken wordt door MapParser.h. de hele main trekt die niet binnen. Heeft iemand ideeën hoe ik dit het beste kan aanpakken want ik weet het niet meer. Als ik de engine.h uitcomment in MapParser dan is de error weg. Een ander project die de engine ook include heeft dit probleem niet en die gebruikt de class op welke de error slaat wel.
ik include nergens dubbel, wat is hier de beste aanpak om het op te lossen?
EDIT: code linkje
EDIT2: nou het lijkt erop dat het alleen fout gaat als ik de engine.h in een ander header reference dan in main.h. dus als ie dieper dan 1 laag zit gaat het mis. is dit een compiler bug ofzo?
ik heb een zeer vaag linker probleem. Even een situatie schets: ik heb een Main.h file met een bijbehorende Main.cpp. deze heeft op het moment alleen een main functie en hij trekt de header MapParser.h binnen. Deze MapParser.h bevat een MapParser class net als in de bijbehorende file MapParser.cpp. Deze header trekt op zijn beurt weer een Engine.h file binnen. Deze bevat een hele zooi aan templated classes. Verder trekken deze files allemaal alleen standard libraries binnen en ik gebruik overal header guards.
Dan nu het probleem: als ik dit compile krijg ik een link error dat 1 specifieke class (die ik niet aanroep is namelijk een error class die ik nog even neit gebruik) al gedefined is in MapParser.obj (error doet zich voor in Main.obj).
Dit is raar omdat ik ten eerste die hele class niet gebruik en ten tweede omdat die hele engine maar 1 keer binnengetrokken wordt door MapParser.h. de hele main trekt die niet binnen. Heeft iemand ideeën hoe ik dit het beste kan aanpakken want ik weet het niet meer. Als ik de engine.h uitcomment in MapParser dan is de error weg. Een ander project die de engine ook include heeft dit probleem niet en die gebruikt de class op welke de error slaat wel.
EDIT: code linkje
EDIT2: nou het lijkt erop dat het alleen fout gaat als ik de engine.h in een ander header reference dan in main.h. dus als ie dieper dan 1 laag zit gaat het mis. is dit een compiler bug ofzo?
[ Voor 8% gewijzigd door williewonka03 op 05-12-2014 15:05 ]