次の C++ コードに問題があります
VC++ を使用していますが、次の MFC ベースのプロジェクトをコンパイルしようとしています。
これはソース ファイルwinmfcproectum.cppです。
#include "stdafx.h"
#include "winmfcproectum.h"
// ExX112_021.CppPP
// An elementary MFC program
COurApp::COurApp()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
COurApp AnApplication; // Define an application object
// Function to create an instance of the main application window
BOOL COurApp::InitInstance()
{
// AfxEnableControlContainer();
// Construct a window object in the free store
// m_pMainWnd = new COurWnd;
// m_pMainWnd->ShowWindow(m_nCmdShow); // ...and display it
return TRUE;
}
これらはヘッダファイルです
stdafx.h
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions
#include <afxdisp.h> // MFC Automation classes
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT
// C RunTime Header Files
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
// TODO: reference additional headers your program requires here
およびwinmfcproectum.h
#ifndef _WINMFCPROECTUM_H
#define _WINMFCPROECTUM_H
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
#include "resource.h" // main symbols
class COurWnd : public CFrameWnd
{
public:
// Constructor
COurWnd()
{
Create(0, L"Our Dumb MFC Application");
}
};
// Application class definition
class COurApp : public CWinApp
{
public:
COurApp();
public:
virtual BOOL InitInstance();
};
#endif
共有 DLL で MFC を使用して、空でない Win32 プロジェクトを作成しました。
resource.hとtargetver.hは自動的に作成されたので、ここには掲載しません。stdafx.hはプリコンパイルされている
ため、 stdafx.cppも自動的に作成されました。
今私の問題は、COurAppクラスがwinmfcproectum.cpp内で見えないように見えることですが、 winmfcproectum.hを含めたので、これらのコンストラクターと関数の実装、つまりCOurApp::COurApp()とCOurApp::InitInstance()にコメントすると、およびそれらの間の変数宣言、すべてがうまくコンパイルされます
コンパイル出力は次のとおりです。
Compiling...
winmfcproectum.cpp
Linking...
winmfcproectum.obj : error LNK2019: unresolved external symbol "public: __thiscall CWinApp::CWinApp(wchar_t const *)" (??0CWinApp@@QAE@PB_W@Z) referenced in function "public: __thiscall COurApp::COurApp(void)" (??0COurApp@@QAE@XZ)
winmfcproectum.obj : error LNK2001: unresolved external symbol "public: virtual class CDocument * __thiscall CWinApp::OpenDocumentFile(wchar_t const *)" (?OpenDocumentFile@CWinApp@@UAEPAVCDocument@@PB_W@Z)
winmfcproectum.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall CWinApp::AddToRecentFileList(wchar_t const *)" (?AddToRecentFileList@CWinApp@@UAEXPB_W@Z)
winmfcproectum.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall CWinApp::DoMessageBox(wchar_t const *,unsigned int,unsigned int)" (?DoMessageBox@CWinApp@@UAEHPB_WII@Z)
winmfcproectum.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall CWinApp::OnDDECommand(wchar_t *)" (?OnDDECommand@CWinApp@@UAEHPA_W@Z)
C:\Documents and Settings\Mango\My Documents\Visual Studio 2008\Projects\winmfcproectum\Debug\winmfcproectum.exe : fatal error LNK1120: 5 unresolved externals