2011-11-14 2 views
0

연결에 문제가 있습니다. 두 DLL (A.dll B.dll)을 준수하는 프로젝트가 두 개 있습니다. 프로젝트 A에서는 정적 인 Singleton singleton이 있습니다. Psudocode : 프로젝트의 헤더 하나는 내가 가지고 CPP 파일에 프로젝트 B의 일부 장소에서다른 프로젝트의 정적 멤버를 사용하는 프로젝트 연결

ClassA 
... 
... 
Singleton singleton; 
... 
... 

:

... 
... 
ClassA::singleton.SomeMethod(); 
... 
... 

프로젝트 컴파일,하지만 문제는 연결에있다.

은 내가 GameDLL 프로젝트에 CCryAction::GetCryAction()를 호출 할 때이 일이 FreeCryEngine SDK 에서이 문제가 있습니다. 이 작동하지 않습니다

int a = CCryAction::GetCryAction()->IsInLevelLoad(); 

오류 3 오류 LNK2001을 : 확인되지 않은 외부 기호 (? m_pThis @ CCryAction @@ 0PAV1 @ A) "개인 정적 클래스 CCryAction * CCryAction :: m_pThis" E : \ CryENGINE_v3_3_5_2456_FreeSDK \ Code \ Game \ GameDll \ GameStateRecorder.obj GameDll

이 메서드는 어떻게 표시됩니까?

static CCryAction * GetCryAction() { return m_pThis; } 
+1

현재 어떤 오류가 있고, 어떻게 링크하고 있는지 알려주거나 단순하지만 비슷하게 구조화 된 솔루션을 연결하는 방법을 알려주십시오. – Jake

답변

0

당신이 필요합니다 : 헤더

struct ClassA { 
    static Singleton singleton; 
}; 

// or 
extern Singleton g_singleton; 

에 CPP 파일에서 :

Singleton ClassA::singleton; 

// or 
Singleton g_singleton; 

그래서 당신이 번역 단위 헤더를 포함ClassA::singleton.someMethod() 또는 ::g_singleton.someMethod()를 호출 할 수 있습니다. 위의 cpp에 대한 오브젝트 파일을 링크하십시오.

관련 문제