은 내가dll 프로젝트간에 extern 메서드를 사용합니까?
extern void* operator new(unsigned int size, const char* file, int line);
extern void operator delete(void* address, const char* file, int line);
extern void Delete(void* address);
#define FUN_NEW new(__FILE__, __LINE__)
#define FUN_DELETE delete
이 Memory.h에 존재하고 Memory.cpp에서 구현 된 메모리를 관리 할 수있는 디버그 조건을 가지고있다. Memory.h과 같이 정의된다 : 이제
#ifdef MEMORY_EXPORT
#define DECL_MEMORY __declspec(dllexport)
#else
#define DECL_MEMORY __declspec(dllimport)
#endif
class DECL_MEMORY Memory : public Singleton<Memory>
{
, I SoundStuff.h과 별도의 프로젝트에 SoundStuff.cpp는, 또한 위의 유사한 방식으로 DLL로 변환되고있다. SoundStuff
가 속한 프로젝트는 Memory
이 속한 프로젝트에 프로젝트 종속성을가집니다. SoundStuff.cpp 구현시 의 Memory.h에서 FUN_DELETE
이 호출됩니다. 그것은 별도의 프로젝트에서 함수를 통해 호출되지만 관계없이 호출됩니다. 이로 인해 링커 오류가 발생합니다.
오류 LNK2019 :되지 않은 외부 심볼 기능 __unwindfunclet $ 초기화 @에서 참조 (?? 3 @ YAXPAXPBDH @ Z) "무효 __cdecl 연산자 (무효 * 숯 CONST의 * int)를 삭제 " SoundStuff @@ AAEXXZ $ (1) SoundStuff.obj
어떻게 그것을 왜 문제를 해결할 수이되고?
CoreFunctions를 DoSomeStuff에 연결하는 방법을 보여주십시오. –
설명에 추가되었습니다. 거기에 프로젝트 의존성이 있고 DoSomeStuff 클래스의 Init 함수는 CoreFunctions에 정의 된 FUN_DELETE를 호출합니다. – Mark
고마워요. 하나의 다른 비트; 당신은 이렇게 말합니다 : "그것은 별도의 프로젝트에서 기능을 통해 호출됩니다."-이 경우 어떤 의미인지를 명확히 할 수 있습니까? 'SoundStuff.cpp'가 다른 프로젝트에서 함수를 호출하고, 다시'FUN_NEW'를 호출한다는 것을 의미합니까? 그렇다면, 그 다른 프로젝트의 코드도'#include "Memory.h"'를 수행합니까? –