У меня проблема со связыванием, у меня есть два проекта, который компилируется в две библиотеки (A.dll B.dll). В проекте A у меня есть статический Singleton singleton
.
Псудокод:
Один из заголовков в проекте A
ClassA
...
...
Singleton singleton;
...
...
В каком-то месте проекта B в файле cpp у меня есть:
...
...
ClassA::singleton.SomeMethod();
...
...
Проект скомпилирован, но есть проблема с линковкой.
У меня есть эта проблема в FreeCryEngine SDK
Это происходит, когда я пытаюсь вызвать CCryAction::GetCryAction()
в GameDLL Project.
Это не работает:
int a = CCryAction::GetCryAction()->IsInLevelLoad();
Ошибка 3, ошибка LNK2001: неразрешенный внешний символ "private: static
класс CCryAction * CCryAction :: m_pThis "
(? m_pThis @ CCryAction @@ 0PAV1 @ A) E: \ CryENGINE_v3_3_5_2456_FreeSDK \ Code \ Game \ GameDll \ GameStateRecorder.obj GameDll
Как выглядит этот метод?
static CCryAction * GetCryAction() { return m_pThis; }