私は同じ問題を抱えていましたが、解決策はありませんでした。 OPに投稿されたような問題は、クラスを含むから来た:
class AFX_EXT_CLASS CMyClass : public CObject
{
public :
// ....
}
これは、私は、コンソールのexeファイルで使用するDLLからエクスポートクラスでした。作成ウィザードで「mfcを使用」としてコンソールアプリケーションを作成すると、この エラーは発生していませんでしたが、そのオプションによってアプリケーションの別の構造が作成されます。
とにかく、さまざまなヘッダーを含めるようにして、AFX_EXT_CLASS
が定義されていますが、何も機能しませんでした。簡単に言えば、解決策は、アプリケーションからMFCを使用して、dllからMFCエクスポートされたクラスを理解できるようにすることです。
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="2" <-------------Insert this line here
CharacterSet="1"
また#include <afx.h>
STDAFX.H(第1には、前に私は右上でそれを含む):どのように我々はそれを行うことは.vcproj
ファイルを編集して、以下に示すように、ラインUseOfMFC="2"
を挿入することです。
ここでは、エラーを取り除き、エラーを取り除いてください。
このオプションをプロジェクト設定から変更する方法は他にありません。このオプションは、プロジェクトプロパティ>>構成プロパティ>>全般>>「Use of MFC」とは異なります。
更新多分便利な他の場所が、どうやらあなただけ#include <afx.h>
、このエラーが消えるよりも、共有DLLでMFCを使用するための設定project properties >> General >> 'Use of MFC'
を変更した場合
UseOfMFC="2"
トリック。後で設定を変更しない場合はコンパイルエラーが、これは実際にも、プロジェクトファイルにUseOfMFC="2"
設定しない変更
c:\program files (x86)\microsoft visual studio 8\vc\atlmfc\include\afx.h(24) : fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
を発生しますので、これは正しい方法です。
出典
2017-11-06 19:30:54
zar
同じ問題があって、 。 –