LNK2022 are a pain to pinpoint. It usually means one of your module's configuration affecting structure layout is different from the others.
Check for the following usual causes:
- Make sure all your projects are using the same runtime library (/MDd or /MD) for your current solution configuration. If one project is using Debug while others are using Release or vice-versa, you will get LNK2022 errors.
- Make sure all your projects are using the same structure member alignment. Pay special attention if one project is using /Zp switch. Also, make sure you dont use #pragma pack(n) conditionally.
You can use /d1reportSingleClassLayout_your-class-name_ (without space) to get information about the problematic class' layout.
For more information see : Diagnosing Hidden ODR Violations in Visual C++