私が持っているメモリを管理するためのデバッグ条件があります
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>
{
現在、別のプロジェクトにあるSoundStuff.hとSoundStuff.cppがあり、上記と同様の方法で dll に変換されています。所属するプロジェクトSoundStuff
には、所属するプロジェクトへのプロジェクト依存関係がありMemory
ます。SoundStuff.cpp の実装では、FUN_DELETE
Memory.hからが呼び出されます。別のプロジェクトの関数を介して呼び出されますが、関係なく呼び出されます。これにより、リンカー エラーが発生します。
エラー LNK2019: 未解決の外部シンボル "void __cdecl operator delete(void *,char const *,int)" (??3@YAXPAXPBDH@Z) 関数 __unwindfunclet$?Init@SoundStuff@@AAEXXZ$1 で参照されている SoundStuff.obj
これはなぜですか、どうすれば修正できますか?