MengeCrowdSim / Menge

The source code for the Menge crowd simulation framework
Apache License 2.0
138 stars 64 forks source link

Fix 2 headers marked as compilable in VS 2013 and 2015 #125

Closed Bromeon closed 5 years ago

Bromeon commented 5 years ago

In Visual Studio 2013 and 2015, the headers state_population_trigger.h and change_state_effect.h are currently marked as compilable source code (translation units). This leads to the following linker errors, because the headers resulted in object files, which shadowed their .cpp counterparts:

1>C:\...\Menge\projects\VS2015\Menge\\build\x64\Debug\MengeCore\state_population_trigger.obj : warning LNK4042: object specified more than once; extras ignored
1>C:\...\Menge\projects\VS2015\Menge\\build\x64\Debug\MengeCore\change_state_effect.obj : warning LNK4042: object specified more than once; extras ignored
1>     Creating library C:\...\Menge\projects\VS2015\Menge\\build\lib\x64\MengeCore_d.lib and object C:\...\Menge\projects\VS2015\Menge\\build\lib\x64\MengeCore_d.exp
1>EventEffectDB.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl Menge::ChangeStateEffect::finalize(void)" (?finalize@ChangeStateEffect@Menge@@UEAAXXZ)
1>change_state_effect.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl Menge::ChangeStateEffect::finalize(void)" (?finalize@ChangeStateEffect@Menge@@UEAAXXZ)
1>EventEffectDB.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl Menge::ChangeStateEffect::agentEffect(class Menge::Agents::BaseAgent *)" (?agentEffect@ChangeStateEffect@Menge@@MEAAXPEAVBaseAgent@Agents@2@@Z)
1>change_state_effect.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl Menge::ChangeStateEffect::agentEffect(class Menge::Agents::BaseAgent *)" (?agentEffect@ChangeStateEffect@Menge@@MEAAXPEAVBaseAgent@Agents@2@@Z)
1>EventEffectDB.obj : error LNK2019: unresolved external symbol "public: __cdecl Menge::ChangeStateEffectFactory::ChangeStateEffectFactory(void)" (??0ChangeStateEffectFactory@Menge@@QEAA@XZ) referenced in function "public: static void __cdecl Menge::ElementDB<class Menge::EventEffectFactory,class Menge::EventEffect>::addBuiltins(void)" (?addBuiltins@?$ElementDB@VEventEffectFactory@Menge@@VEventEffect@2@@Menge@@SAXXZ)
1>EventEffectDB.obj : error LNK2001: unresolved external symbol "protected: virtual bool __cdecl Menge::ChangeStateEffectFactory::setFromXML(class Menge::EventEffect *,class TiXmlElement *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)const " (?setFromXML@ChangeStateEffectFactory@Menge@@MEBA_NPEAVEventEffect@2@PEAVTiXmlElement@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
1>change_state_effect.obj : error LNK2001: unresolved external symbol "protected: virtual bool __cdecl Menge::ChangeStateEffectFactory::setFromXML(class Menge::EventEffect *,class TiXmlElement *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)const " (?setFromXML@ChangeStateEffectFactory@Menge@@MEBA_NPEAVEventEffect@2@PEAVTiXmlElement@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
1>EventTriggerDB.obj : error LNK2019: unresolved external symbol "public: __cdecl Menge::StatePopulationTrigger::StatePopulationTrigger(void)" (??0StatePopulationTrigger@Menge@@QEAA@XZ) referenced in function "protected: virtual class Menge::EventTrigger * __cdecl Menge::StatePopulationTriggerFactory::instance(void)const " (?instance@StatePopulationTriggerFactory@Menge@@MEBAPEAVEventTrigger@2@XZ)
1>state_population_trigger.obj : error LNK2001: unresolved external symbol "public: __cdecl Menge::StatePopulationTrigger::StatePopulationTrigger(void)" (??0StatePopulationTrigger@Menge@@QEAA@XZ)
1>EventTriggerDB.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl Menge::StatePopulationTrigger::finalize(void)" (?finalize@StatePopulationTrigger@Menge@@UEAAXXZ)
1>state_population_trigger.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl Menge::StatePopulationTrigger::finalize(void)" (?finalize@StatePopulationTrigger@Menge@@UEAAXXZ)
1>EventTriggerDB.obj : error LNK2001: unresolved external symbol "protected: virtual bool __cdecl Menge::StatePopulationTrigger::testCondition(void)" (?testCondition@StatePopulationTrigger@Menge@@MEAA_NXZ)
1>state_population_trigger.obj : error LNK2001: unresolved external symbol "protected: virtual bool __cdecl Menge::StatePopulationTrigger::testCondition(void)" (?testCondition@StatePopulationTrigger@Menge@@MEAA_NXZ)
1>EventTriggerDB.obj : error LNK2019: unresolved external symbol "public: __cdecl Menge::StatePopulationTriggerFactory::StatePopulationTriggerFactory(void)" (??0StatePopulationTriggerFactory@Menge@@QEAA@XZ) referenced in function "public: static void __cdecl Menge::ElementDB<class Menge::EventTriggerFactory,class Menge::EventTrigger>::addBuiltins(void)" (?addBuiltins@?$ElementDB@VEventTriggerFactory@Menge@@VEventTrigger@2@@Menge@@SAXXZ)
1>EventTriggerDB.obj : error LNK2001: unresolved external symbol "protected: virtual bool __cdecl Menge::StatePopulationTriggerFactory::setFromXML(class Menge::EventTrigger *,class TiXmlElement *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)const " (?setFromXML@StatePopulationTriggerFactory@Menge@@MEBA_NPEAVEventTrigger@2@PEAVTiXmlElement@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
1>state_population_trigger.obj : error LNK2001: unresolved external symbol "protected: virtual bool __cdecl Menge::StatePopulationTriggerFactory::setFromXML(class Menge::EventTrigger *,class TiXmlElement *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)const " (?setFromXML@StatePopulationTriggerFactory@Menge@@MEBA_NPEAVEventTrigger@2@PEAVTiXmlElement@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
1>C:\...\Menge\projects\VS2015\Menge\\build\lib\x64\MengeCore_d.dll : fatal error LNK1120: 9 unresolved externals

This change is Reviewable