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

[VC15]AFXWIN.HとMBSTRING.Hを同時インクルードでコンパイルエラーC2733

文書番号: 402008

最終更新日: 1999/03/19


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


この記事は、以前は次の ID で公開されていました: JP402008

概要

この資料は AFXWIN.H と MBSTRING.H を同時にインクルードするとコンパイルエラー C2733 が 発生する問題について説明したものです。

詳細

Visual C++ 1.5 で AFXWIN.H と MBSTRING.H を同時にインクルードすると以下の
ようなエラーが発生します。
  mbstring.h(118) : error C2733:
  2 つ以上のオーバーロードされた関数 '_fstrncnt' が C リンケージとして
  宣言されています。
  mbstring.h(119) : error C2733:
  2 つ以上のオーバーロードされた関数 '_fstrnextc' が C リンケージとして
  宣言されています。
  mbstring.h(120) : error C2733:
  2 つ以上のオーバーロードされた関数 '_fstrninc' が C リンケージとして
  宣言されています。
  mbstring.h(121) : error C2733:
  2 つ以上のオーバーロードされた関数 '_fstrspnp' が C リンケージとして
  宣言されています。
例えばこのエラーは Visual Workbench の AppWizard で作られたソースファイルに
mbstring.h をインクルードすると発生します。

原因

このエラーは MFC が MBCS(Multi Byte Code System) を許可せずに tchar.h を
インクルードしたために上記の関数が二重に定義されて発生します。

対処方法

コンパイル時のオプションで /D"_MBCS" を追加することによって回避することが できます。

Visual Workbench での設定

  1. Option - Project... メニューから Project Options ダイアログを開きます。
  2. Compiler...(Customize Build Option) ボタンを押し、C/C++ Compiler Option ダイアログボックスを開きます。
  3. ダイアログの一番上にある Build Options ラジオボタンで Common to Both を選択します。
  4. Category: リストボックスで Preprocessor を選択します。
  5. 右側のグループボックスのタイトルが Category Settings: Preprocessor になって いることを確認し、そこの最初の項目 Symbols and Macros to Define: に次の 定義を追加します。
         "_MBCS"
    
  6. C/C++ Compiler Options ダイアログと Project Options ダイアログを OK ボタ ンを 押して閉じ、元の状態に戻ってから Rebuild All を行います。

詳細

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

Keywords: KBPRB VC15 KB402008
Technology: kbAudDeveloper kbvc150 kbVCsearch

inserted by FC2 system