2009-10-16 2 views
6

DLL을 사용하도록 프로젝트를 변환하는 중 템플릿을 사용하지 않도록 클래스 Singleton을 분리하려고합니다.프로 시저 입력 지점을 동적 연결 라이브러리 Core.dll에서 찾을 수 없습니다.

내 계급 LudoMemory은 원래 Singleton에서 상속되었습니다. 나는 지금 그것을 파괴하고 스스로를 만들고 내 주 엔진이 Singleton에 의존하지 않도록하는 기능을 제공하려고 노력 중이다.

나는 그런 같은 간단한 파괴하는 방법을 작성했습니다 :

LudoMemory *memory_Singleton = NULL; 

    void LudoMemory::Destroy() 
    { 
     LUDO_SAFE_DELETE(m_Singleton) 
    } 

하고 프로그램을 실행시

은 (어떤 컴파일러 오류) 나는이 오류를받을하지 :

The procedure entry point [email protected]@@SAXXZ could not be located in the dynamic link library LudoCore.dll

LudoCoreLudoMemory가 속한 프로젝트 에. 왜 이런 일이 일어나는 걸까요? 어떻게 해결할 수 있습니까?

답변

8

시스템에 여러 버전의 ludocore.dll이 없습니까? 프로 시저 엔트리 포인트 오류는 보통 ludocore.lib 버전 x에 대해 프로젝트를 컴파일하고 프로그램 실행시 ludocore.dll 버전 y를 사용하며 버전 y는 LudoMemory :: Destroy()를 정의하지 않습니다.

2

여러 DLL 버전에 대한 제이콥의 대답이 나올 것 같습니다.

또한 일부 빌드 시스템에서는 DLL에서 내보내는 함수를 명시 적으로 나열해야합니다.

빌드 환경을 조사하고 내보낼 메소드 목록을 엔트리 포인트로 제공해야하는지 확인하십시오. 비주얼 스튜디오 빌드 환경에서

0

, 또한 링커 최적화 설정의 참고 문헌 없음 (/ OPT : NOREF)] 해제하여 시도 할 수