Cannot build editor binaries on windows for project created on Mac OS X

We’ve got a project created in Unreal Engine 4.7.6 on Mac OS X with the following .gitignore file:

Binaries
DerivedDataCache
Intermediate
Saved
*.xcodeproj
target
Build
*.pyc
.DS_Store
*.sdf

I’ve checked the project out on windows and am trying to load it in UE 4.7.6 and i get the following:

This project was made with a different version of the Unreal Engine. Converting to this version will rebuild your code projects.

New features and improvements sometimes cause API changes, which may require you to modify your code before it compiles. Content saved with newer versions of the editor will not open in older versions.

We recommend you open a copy of your project to avoid damaging the original.

When compiling the C++ source code i get a large number of linker errors (all the errors are linker errors) like below:

[42/91] Link UE4Editor-ApiPlugin.dll
   Creating library C:\Users\Brendan\Documents\debug-prototype-unreal\Intermediate\Build\Win64\DebugTestEditor\Development\Plugins\Dynamic\UE4Editor-ApiPlugin.lib and object C:\Users\Brendan\Documents\debug-prototype-unreal\Intermediate\Build\Win64\DebugTestEditor\Development\Plugins\Dynamic\UE4Editor-ApiPlugin.exp
Camera.cpp.obj : error LNK2019: unresolved external symbol "public: static struct FRotator __cdecl UKismetMathLibrary::FindLookAtRotation(struct FVector const &,struct FVector const &)" (?FindLookAtRotation@UKismetMathLibrary@@SA?AUFRotator@@AEBUFVector@@0@Z) referenced in function "public: static void __cdecl api::Camera::LookAt(class AActor *,class AActor *)" (?LookAt@Camera@api@@SAXPEAVAActor@@0@Z)
Debug.cpp.obj : error LNK2019: unresolved external symbol "public: static void __cdecl UKismetSystemLibrary::PrintString(class UObject *,class FString const &,bool,bool,struct FLinearColor)" (?PrintString@UKismetSystemLibrary@@SAXPEAVUObject@@AEBVFString@@_N2UFLinearColor@@@Z) referenced in function "public: static void __cdecl api::Debug::Trace(class UObject *,class FString)" (?Trace@Debug@api@@SAXPEAVUObject@@VFString@@@Z)
C:\Users\Brendan\Documents\debug-prototype-unreal\Plugins\ApiPlugin\Binaries\Win64\UE4Editor-ApiPlugin.dll : fatal error LNK1120: 2 unresolved externals

[67/91] Link UE4Editor-GamePlugin.dll
   Creating library C:\Users\Brendan\Documents\debug-prototype-unreal\Intermediate\Build\Win64\DebugTestEditor\Development\Plugins\Dynamic\UE4Editor-GamePlugin.lib and object C:\Users\Brendan\Documents\debug-prototype-unreal\Intermediate\Build\Win64\DebugTestEditor\Development\Plugins\Dynamic\UE4Editor-GamePlugin.exp
finite_lifespan.cpp.obj : error LNK2019: unresolved external symbol "public: class entity::IContainer * __cdecl entity::IComponent::Root(void)" (?Root@IComponent@entity@@QEAAPEAVIContainer@2@XZ) referenced in function "public: class npp::Option<class game::GameObject *> __cdecl game::Component<class game::FiniteLifespan>::Base(void)" (?Base@?$Component@VFiniteLifespan@game@@@game@@QEAA?AV?$Option@PEAVGameObject@game@@@npp@@XZ)
linear_tween.cpp.obj : error LNK2001: unresolved external symbol "public: class entity::IContainer * __cdecl entity::IComponent::Root(void)" (?Root@IComponent@entity@@QEAAPEAVIContainer@2@XZ)
ordered_ref_list.cpp.obj : error LNK2001: unresolved external symbol "public: class entity::IContainer * __cdecl entity::IComponent::Root(void)" (?Root@IComponent@entity@@QEAAPEAVIContainer@2@XZ)
simple_motion.cpp.obj : error LNK2001: unresolved external symbol "public: class entity::IContainer * __cdecl entity::IComponent::Root(void)" (?Root@IComponent@entity@@QEAAPEAVIContainer@2@XZ)
finite_lifespan.cpp.obj : error LNK2019: unresolved external symbol "public: class std::unique_ptr<class entity::IComponent,struct std::default_delete<class entity::IComponent> > __cdecl entity::IContainer::RemoveComponent(class entity::IComponent *)" (?RemoveComponent@IContainer@entity@@QEAA?AV?$unique_ptr@VIComponent@entity@@U?$default_delete@VIComponent@entity@@@std@@@std@@PEAVIComponent@2@@Z) referenced in function "public: class std::unique_ptr<class entity::IComponent,struct std::default_delete<class entity::IComponent> > __cdecl entity::IContainer::RemoveComponent<class game::FiniteLifespan>(class game::FiniteLifespan *)" (??$RemoveComponent@VFiniteLifespan@game@@@IContainer@entity@@QEAA?AV?$unique_ptr@VIComponent@entity@@U?$default_delete@VIComponent@entity@@@std@@@std@@PEAVFiniteLifespan@game@@@Z)
ordered_ref_list.cpp.obj : error LNK2001: unresolved external symbol "public: class std::unique_ptr<class entity::IComponent,struct std::default_delete<class entity::IComponent> > __cdecl entity::IContainer::RemoveComponent(class entity::IComponent *)" (?RemoveComponent@IContainer@entity@@QEAA?AV?$unique_ptr@VIComponent@entity@@U?$default_delete@VIComponent@entity@@@std@@@std@@PEAVIComponent@2@@Z)
linear_tween.cpp.obj : error LNK2019: unresolved external symbol "public: void __cdecl entity::IComponent::Destroy(void)" (?Destroy@IComponent@entity@@QEAAXXZ) referenced in function "protected: virtual void __cdecl game::LinearTween::OnStep(float)" (?OnStep@LinearTween@game@@MEAAXM@Z)
linear_tween.cpp.obj : error LNK2019: unresolved external symbol "public: void __cdecl entity::IComponent::SetActive(bool)" (?SetActive@IComponent@entity@@QEAAX_N@Z) referenced in function "protected: virtual void __cdecl game::LinearTween::OnStep(float)" (?OnStep@LinearTween@game@@MEAAXM@Z)
ordered_ref_list.cpp.obj : error LNK2001: unresolved external symbol "public: void __cdecl entity::IComponent::SetActive(bool)" (?SetActive@IComponent@entity@@QEAAX_N@Z)
ordered_ref_list.cpp.obj : error LNK2019: unresolved external symbol "public: virtual __cdecl entity::IComponent::~IComponent(void)" (??1IComponent@entity@@UEAA@XZ) referenced in function "int `public: __cdecl entity::Component<class game::WeakRef>::Component<class game::WeakRef>(void)'::`1'::dtor$0" (?dtor$0@?0???0?$Component@VWeakRef@game@@@entity@@QEAA@XZ@4HA)
ordered_ref_list.cpp.obj : error LNK2019: unresolved external symbol "public: void __cdecl entity::IComponent::Initialize(void)" (?Initialize@IComponent@entity@@QEAAXXZ) referenced in function "public: class game::WeakRef * __cdecl entity::IContainer::AddComponent<class game::WeakRef>(class std::unique_ptr<class entity::IComponent,struct std::default_delete<class entity::IComponent> >)" (??$AddComponent@VWeakRef@game@@@IContainer@entity@@QEAAPEAVWeakRef@game@@V?$unique_ptr@VIComponent@entity@@U?$default_delete@VIComponent@entity@@@std@@@std@@@Z)
ordered_ref_list.cpp.obj : error LNK2019: unresolved external symbol "public: class entity::IContainer * __cdecl entity::IComponent::Parent(void)" (?Parent@IComponent@entity@@QEAAPEAVIContainer@2@XZ) referenced in function "public: class game::WeakRef * __cdecl entity::IContainer::AddComponent<class game::WeakRef>(class std::unique_ptr<class entity::IComponent,struct std::default_delete<class entity::IComponent> >)" (??$AddComponent@VWeakRef@game@@@IContainer@entity@@QEAAPEAVWeakRef@game@@V?$unique_ptr@VIComponent@entity@@U?$default_delete@VIComponent@entity@@@std@@@std@@@Z)
ordered_ref_list.cpp.obj : error LNK2019: unresolved external symbol "public: void __cdecl entity::IComponent::SetParent(class entity::IContainer *)" (?SetParent@IComponent@entity@@QEAAXPEAVIContainer@2@@Z) referenced in function "public: class game::WeakRef * __cdecl entity::IContainer::AddComponent<class game::WeakRef>(class std::unique_ptr<class entity::IComponent,struct std::default_delete<class entity::IComponent> >)" (??$AddComponent@VWeakRef@game@@@IContainer@entity@@QEAAPEAVWeakRef@game@@V?$unique_ptr@VIComponent@entity@@U?$default_delete@VIComponent@entity@@@std@@@std@@@Z)
ordered_ref_list.cpp.obj : error LNK2019: unresolved external symbol "public: void __cdecl entity::IComponent::ResetGroup(bool)" (?ResetGroup@IComponent@entity@@QEAAX_N@Z) referenced in function "public: virtual __cdecl entity::Component<class game::WeakRef>::~Component<class game::WeakRef>(void)" (??1?$Component@VWeakRef@game@@@entity@@UEAA@XZ)
ordered_ref_list.cpp.obj : error LNK2019: unresolved external symbol "public: void __cdecl entity::IGroup::Register(class entity::IComponent *)" (?Register@IGroup@entity@@QEAAXPEAVIComponent@2@@Z) referenced in function "public: class game::WeakRef * __cdecl entity::IContainer::AddComponent<class game::WeakRef>(class std::unique_ptr<class entity::IComponent,struct std::default_delete<class entity::IComponent> >)" (??$AddComponent@VWeakRef@game@@@IContainer@entity@@QEAAPEAVWeakRef@game@@V?$unique_ptr@VIComponent@entity@@U?$default_delete@VIComponent@entity@@@std@@@std@@@Z)
ordered_ref_list.cpp.obj : error LNK2019: unresolved external symbol "public: virtual __cdecl entity::IContainer::~IContainer(void)" (??1IContainer@entity@@UEAA@XZ) referenced in function "int `public: __cdecl entity::Component<class game::WeakRef>::Component<class game::WeakRef>(void)'::`1'::dtor$1" (?dtor$1@?0???0?$Component@VWeakRef@game@@@entity@@QEAA@XZ@4HA)
ordered_ref_list.cpp.obj : error LNK2019: unresolved external symbol "public: void __cdecl entity::IContainer::ClearComponents(void)" (?ClearComponents@IContainer@entity@@QEAAXXZ) referenced in function "public: virtual __cdecl entity::Component<class game::WeakRef>::~Component<class game::WeakRef>(void)" (??1?$Component@VWeakRef@game@@@entity@@UEAA@XZ)
ordered_ref_list.cpp.obj : error LNK2001: unresolved external symbol "public: virtual class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl entity::ComponentGroup::DebugName(void)" (?DebugName@ComponentGroup@entity@@UEAA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
ordered_ref_list.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl entity::ComponentGroup::Bind(class entity::IComponent *)" (?Bind@ComponentGroup@entity@@MEAAXPEAVIComponent@2@@Z)
ordered_ref_list.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl entity::ComponentGroup::Unbind(class entity::IComponent *)" (?Unbind@ComponentGroup@entity@@MEAAXPEAVIComponent@2@@Z)
ordered_ref_list.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl entity::ComponentGroup::DeferredBind(class entity::IComponent *)" (?DeferredBind@ComponentGroup@entity@@MEAAXPEAVIComponent@2@@Z)
ordered_ref_list.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl entity::ComponentGroup::DeferredUnbind(class entity::IComponent *)" (?DeferredUnbind@ComponentGroup@entity@@MEAAXPEAVIComponent@2@@Z)
ordered_ref_list.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual class npp::Iterator<void *,class entity::IComponent *> __cdecl entity::ComponentGroup::Components(void)" (?Components@ComponentGroup@entity@@MEAA?AV?$Iterator@PEAXPEAVIComponent@entity@@@npp@@XZ)
ordered_ref_list.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual class npp::Iterator<void *,class entity::IComponent *> __cdecl entity::ComponentGroup::DeferredBinds(void)" (?DeferredBinds@ComponentGroup@entity@@MEAA?AV?$Iterator@PEAXPEAVIComponent@entity@@@npp@@XZ)
ordered_ref_list.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual class npp::Iterator<void *,class entity::IComponent *> __cdecl entity::ComponentGroup::DeferredUnbinds(void)" (?DeferredUnbinds@ComponentGroup@entity@@MEAA?AV?$Iterator@PEAXPEAVIComponent@entity@@@npp@@XZ)
ordered_ref_list.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual bool __cdecl entity::ComponentGroup::IsDeferredUnbind(class entity::IComponent *)" (?IsDeferredUnbind@ComponentGroup@entity@@MEAA_NPEAVIComponent@2@@Z)
C:\Users\Brendan\Documents\debug-prototype-unreal\Plugins\GamePlugin\Binaries\Win64\UE4Editor-GamePlugin.dll : fatal error LNK1120: 21 unresolved externals

Any ideas as to what i’m doing wrong?

Okay, it looks like this is a problem due to the way the compilers on OSX handle externals vs. VS2013. We are working through them and once I have a full solution i’ll post it here.