本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[MSVC]MFC のリンク時 L2025 が出力される

文書番号: 401171

最終更新日: 2004/04/27


この資料は以下の製品について記述したものです。


概要

この資料は、Microsoft Foundation Class ライブラリ (以下 MFC) を利用したプログラ ムで、リンク時に発生する以下のエラーの原因と解決方法について説明したものです。
  C:\C700\MFC\lib\safxcrd.lib(memory.cpp) : error L2025: public:
      static void __near* __near __cdecl
      CObject::operator new(unsigned int) : symbol defined more than once
  C:\C700\MFC\lib\safxcrd.lib(memory.cpp) : error L2025: public:
      static void __near __cdecl
      CObject::operator delete(void __near*) : symbol defined more than once

詳細

MFC で、デバッグ用のライブラリをリンクする場合、コンパイル時に _DEBUG マクロを 指定する必要があります。また、リンカに対するライブラリの指定は、MFC ライブラ リをランタイムライブラリより前に指定しなければなりません。

原因

デバッグ用の MFC ライブラリが、ランタイムライブラリに含まれる一部の関数の特別な デバッグバージョンを供給しているためです。new や delete などがその関数です。 そのため、前述の2条件を満たしていない時、二重定義になります。

対処方法

MS-DOS のコマンドラインからコンパイルする場合、_DEBUG マクロは、/D オプションで 以下のように指定します。
   cl /AS /D_DEBUG test.cpp safxcrd.lib
Programmer's Workbench (以下 PWB) からコンパイルする場合は、メニューの
Option → Language Option → Compiler Option → Additional Global Options
ダイアログボックスで < Use MFC Libraries > スイッチを選択します。
Visual Workbench (以下 VWB) では、メニューの オプション -> プロジェクトの ダイアログボックスで <Microsoft Foundation Class を使用> スイッチを選択します。 すると、PWB(VWB) は自動的に、デバッグモードでのコンパイル時、/D_DEBUG オプション を付加し、リンカには、適切な MFC ライブラリとランタイムライブラリを正しい順序で 指定します。

詳細

  • Visual C++ は、米国 Microsoft Corporation の商標です。

Keywords: C7 KBPRB VC10 KB401171
Technology: kbAudDeveloper kbvc150 kbVCsearch kbZNotKeyword3 kbZNotKeyword8

inserted by FC2 system