0

私のプロジェクトでは、グローバル演算子newをリロードして削除([]も)しようとしています。そして、初めてコンパイルしようとすると、リンクエラーが発生します。

Main.obj:エラーLNK2005: "void * __cdecl operator new(unsigned int)"(?? 2 @ YAPAXI @ Z)はすでにLIBCMTD.lib(new.obj)で定​​義されています

2回目にコンパイルしようとすると、エラーは魔法のように消えます。しかし、時々戻ってきます。 この問題を解決するにはどうすればよいですか?

ランタイムライブラリ:MTd。

コード:

void  operator delete(void * pointer){LALALA}

または

void  __cdecl operator delete(void * pointer){LALALA}

次の手順を実行すると、このエラーが返されます。

  1. 再ロードされた新しい(およびその他)を削除します
  2. コンパイル
  3. もう一度リロード
  4. コンパイルしてこのエラーを取得してみてください

それ以外の場合、エラーは消えます。これにはどのような理由がありますか?

4

1 に答える 1

-1

「new」と「delete」を静的メンバー関数として暗黙的に宣言する必要があります

void* operator new (size_t size);

void 演算子の削除 (void *p);

于 2012-04-15T19:30:14.977 に答える