web-dev-qa-db-ja.com

リンカー:ファイル「nafxcwd.lib」を開けません

Visual Studio 2013を介してプロジェクトをコンパイルする際に問題があります。このリンカーエラーが発生しました。

LINK : fatal error LNK1104: cannot open file 'nafxcwd.lib'

この page によると、共有ライブラリでMFCを使用する必要があります。しかし、MFCはまったく使用していません。
Use Standard Windows Libraries設定を使用してコンパイルされたすべてのライブラリとメインプロジェクト。この問題は、Visual Studio 2013ツールチェーンを介してプロジェクトをビルドしようとしたときにのみ発生しますが、Visual Studio 2010ツールチェーンで正常にビルドされました。

追伸プロジェクトはVisual Studio 6.0からVisual Studio 2013に移動されました。

17
user922871

Microsoftのページにあるように、Microsoft Visual C++ 6.0 Standard Editionでは、MFCライブラリとの静的リンクをサポートしていないようです。ただし、Visual Studio 2013では、Microsoftライブラリと静的にリンクできます。問題を解決するには、このリンク https://support.Microsoft.com/en-us/kb/243458 を確認してください。

Microsoftサイトから:

MFCライブラリに動的にリンクするようにMFCプロジェクト設定を変更するには、次の手順を実行します。MFCプロジェクトを開きます。

  1. [プロジェクト]メニューの[設定]をクリックします。
  2. [コンボの設定]ボックスで、[すべての構成]を選択します。 [全般]タブをクリックします。表示されていない場合は、タブスクロールボタンを使用して左にスクロールします。
  3. [Microsoft Foundation Classes]コンボボックスで、[共有DLLでMFCを使用する]を選択します。 [OK]をクリックして変更を保存します。
3
user4272649

MFCをまったく使用しないVS 2008プロジェクトの更新を行ったところ、同じ問題に直面し、これらの3つのステップを実行して修正しました。強調表示されているプロジェクト(VS 2008)のプロパティを一目で確認するには、ショットを参照してください。

enter image description here

ステップ1

この行を#define _AFXDLLをstdafx.hファイルに追加してください

#define WIN32_LEAN_AND_MEAN     // Exclude rarely-used stuff from Windows headers

#define _AFXDLL

ステップ2

VS 2013ソリューションに移動し、「プロジェクトのプロパティ-> C/C++->コード生成->ランタイムライブラリ」を開いて、値をMulti-threaded Debug DLL(/ MDd)(リリース構成をに調整してください)マルチスレッドDLL(/ MD)、これら2つの手順を完了すると、このリンクエラーが発生し始めます。

エラーLNK1104:ファイル 'mfc120d.lib'を開けません

ここで、プロジェクトの「文字セット」を_MBCSではなくUnicodeに設定する必要があります

ステップ-3

ここで「プロジェクトのプロパティ->一般->プロジェクトのデフォルト->文字セット」を開き、値をUse Unicode Character Setに変更します。この部分にはほとんど必要ありません忍耐と作業が増えると、ソースファイルで文字列の特性をwchar_tまたはTCHARに変更する必要があります。

それがあなたの問題を解決することを願っています。

0
A.B.

あるマシンでコンパイルされたが別のマシンではコンパイルされなかった以外は、同じ問題がありました。次の推奨事項に従ってVisual Studio 2013のマルチバイトMFCライブラリをインストールすることで解決: Visual Studioを使用したMFC C++プロジェクトのビルドでのMBCSエラー

0
kristian mo

MFCを消費する原因を特定するには、/ VERBOSEとリンクして、nafxcwdの出力を検索します。ほとんどの場合、/ DEFAULTLIBディレクティブの後に表示されます-ディレクティブの直前にロードされたライブラリを確認してください。

0
Ofek Shilon