在vs2010中利用mfc写一个连连看游戏时各种资源窗口啥的等都报“未声明的标识符”问题

写这个连连看游戏刚开始导入各种资源文件改好ID后运行正常,但通过进一步的编程后不知道为什么开始报各种”未声明的标识符“bug(可能中途改了一些什么设置.....),现项目最近运行的log文件如下:

 生成启动时间为 2016/5/26 17:37:08。
     1>项目“C:\Users\Aliez\documents\visual studio 2010\Projects\Lianliankan\LLK\LLK.vcxproj”在节点 2 上(build 个目标)。
     1>InitializeBuildStatus:
         正在对“Debug\LLK.unsuccessfulbuild”执行 Touch 任务。
       ClCompile:
         所有输出均为最新。
         C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\CL.exe /c /ZI /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _WINDOWS /D _DEBUG /D _UNICODE /D UNICODE /D _AFXDLL /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Yc"StdAfx.h" /Fp"Debug\LLK.pch" /Fo"Debug\\" /Fd"Debug\vc100.pdb" /Gd /TP /analyze- /errorReport:prompt stdafx.cpp
         stdafx.cpp
         C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\CL.exe /c /ZI /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _WINDOWS /D _DEBUG /D _UNICODE /D UNICODE /D _AFXDLL /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Yu"StdAfx.h" /Fp"Debug\LLK.pch" /Fo"Debug\\" /Fd"Debug\vc100.pdb" /Gd /TP /analyze- /errorReport:prompt GameControl.cpp GameDlg.cpp GameLogic.cpp LLK.cpp LLKDlg.cpp
         LLKDlg.cpp
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\llkdlg.h(14): error C2065: “IDD_LLK_DIALOG”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.h(14): error C2146: 语法错误: 缺少“;”(在标识符“m_GameC”的前面)
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.h(14): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.h(14): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.h(17): error C2065: “IDD_GAME_DIALOG”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\llkdlg.cpp(23): error C2065: “IDD_ABOUTBOX”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\llkdlg.cpp(54): error C2065: “IDR_MAINFRAME”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\llkdlg.cpp(66): error C2065: “IDC_BTN_BASIC”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\llkdlg.cpp(66): error C2065: “IDC_BTN_BASIC”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\llkdlg.cpp(67): error C2065: “IDC_BTN_BASIC”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\llkdlg.cpp(67): error C2065: “IDC_BTN_BASIC”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\llkdlg.cpp(79): error C2065: “IDM_ABOUTBOX”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\llkdlg.cpp(79): error C2065: “IDM_ABOUTBOX”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\llkdlg.cpp(80): error C2065: “IDM_ABOUTBOX”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\llkdlg.cpp(87): error C2065: “IDS_ABOUTBOX”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\llkdlg.cpp(92): error C2065: “IDM_ABOUTBOX”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\llkdlg.cpp(108): error C2065: “IDM_ABOUTBOX”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\llkdlg.cpp(161): error C2065: “IDB_MAIN_BG”: 未声明的标识符
         LLK.cpp
         GameLogic.cpp
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamelogic.cpp(15): error C2653: “CGameControl”: 不是类或命名空间名称
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamelogic.cpp(15): error C2065: “s_nRows”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamelogic.cpp(16): error C2653: “CGameControl”: 不是类或命名空间名称
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamelogic.cpp(16): error C2065: “s_nCols”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamelogic.cpp(17): error C2653: “CGameControl”: 不是类或命名空间名称
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamelogic.cpp(17): error C2065: “s_nPicNum”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamelogic.cpp(70): error C2653: “CGameControl”: 不是类或命名空间名称
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamelogic.cpp(70): error C2065: “s_nRows”: 未声明的标识符
         GameDlg.cpp
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.h(14): error C2146: 语法错误: 缺少“;”(在标识符“m_GameC”的前面)
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.h(14): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.h(14): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.h(17): error C2065: “IDD_GAME_DIALOG”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.cpp(32): error C2065: “IDB_Game_BG”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.cpp(41): error C2065: “IDC_BTN_START”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.cpp(41): error C2065: “IDC_BTN_START”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.cpp(54): error C2065: “IDR_MAINFRAME”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.cpp(55): error C2065: “IDR_MAINFRAME”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.cpp(109): error C2065: “CGameControl”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.cpp(109): error C2146: 语法错误: 缺少“;”(在标识符“ctr”的前面)
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.cpp(109): error C2065: “ctr”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.cpp(110): error C2065: “ctr”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.cpp(110): error C2228: “.StartGame”的左边必须有类/结构/联合
                 类型是“'unknown-type'”
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.cpp(116): error C2653: “CGameControl”: 不是类或命名空间名称
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.cpp(116): error C2065: “s_nRows”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.cpp(117): error C2653: “CGameControl”: 不是类或命名空间名称
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.cpp(117): error C2065: “s_nCols”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.cpp(125): error C2065: “m_GameC”: 未声明的标识符
     1>c:\users\Aliez\documents\visual studio 2010\projects\lianliankan\llk\gamedlg.cpp(125): error C2228: “.GetElement”的左边必须有类/结构/联合
                 类型是“'unknown-type'”
         GameControl.cpp
         正在生成代码...
     1>已完成生成项目“C:\Users\Aliez\documents\visual studio 2010\Projects\Lianliankan\LLK\LLK.vcxproj”(build 个目标)的操作 - 失败。

生成失败。

已用时间 00:00:15.03

有关LLKDlg.cpp代码如下:


// LLKDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "LLKDlg.h"
#include "afxdialogex.h"
#include <afxwin.h>
#include "GameDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// 用于应用程序“关于”菜单项的 CAboutDlg 对话框

class CAboutDlg : public CDialogEx
{
public:
    CAboutDlg();

// 对话框数据
    enum { IDD =IDD_ABOUTBOX };

    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

// 实现
protected:
    DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()


// CLLKDlg 对话框




CLLKDlg::CLLKDlg(CWnd* pParent /*=NULL*/)
    : CDialogEx(CLLKDlg::IDD, pParent)
{
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CLLKDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CLLKDlg, CDialogEx)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
  ON_BN_CLICKED(IDC_BTN_BASIC, &CLLKDlg::OnBnClickedBtnBasic)
    ON_BN_CLICKED(IDC_BTN_BASIC, &CLLKDlg::OnBnClickedBtnBasic)
END_MESSAGE_MAP()


// CLLKDlg 消息处理程序

BOOL CLLKDlg::OnInitDialog()
{
    CDialogEx::OnInitDialog();
    // 将“关于...”菜单项添加到系统菜单中。
    InitBackground();
    // IDM_ABOUTBOX 必须在系统命令范围内。
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
        BOOL bNameValid;
        CString strAboutMenu;
        bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
        ASSERT(bNameValid);
        if (!strAboutMenu.IsEmpty())
        {
            pSysMenu->AppendMenu(MF_SEPARATOR);
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
        }
    }

    // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
    //  执行此操作
    SetIcon(m_hIcon, TRUE);         // 设置大图标
    SetIcon(m_hIcon, FALSE);        // 设置小图标

    // TODO: 在此添加额外的初始化代码

    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

void CLLKDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
    if ((nID & 0xFFF0) ==IDM_ABOUTBOX)//IDM_ABOUTBOX
    {
        CAboutDlg dlgAbout;
        dlgAbout.DoModal();
    }
    else
    {
        CDialogEx::OnSysCommand(nID, lParam);
    }
}

// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。

void CLLKDlg::OnPaint()
{
    if (IsIconic())
    {
        CPaintDC dc(this); // 用于绘制的设备上下文

        SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

        // 使图标在工作区矩形中居中
        int cxIcon = GetSystemMetrics(SM_CXICON);
        int cyIcon = GetSystemMetrics(SM_CYICON);
        CRect rect;
        GetClientRect(&rect);
        int x = (rect.Width() - cxIcon + 1) / 2;
        int y = (rect.Height() - cyIcon + 1) / 2;

        // 绘制图标
        dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {//创建CPanitDC对象
        CPaintDC dc(this);
        dc.BitBlt(0,0,800,600,&m_dcMem,0,0,SRCCOPY);//绘制背景图片
        CDialogEx::OnPaint();
    }
}

//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CLLKDlg::OnQueryDragIcon()
{
    return static_cast<HCURSOR>(m_hIcon);
}

void CLLKDlg::InitBackground()
{
    CClientDC dc(this);//获得对话框的视频内存
    CBitmap bmpMain;
    bmpMain.LoadBitmap(IDB_MAIN_BG);
    m_dcMem.CreateCompatibleDC(&dc);//创建与视频内存兼容的内存DC
    m_dcMem.SelectObject(bmpMain);//将位图组员选入DC
    //调整窗口大小
    CRect rtWin;
    CRect rtClient;
    this->GetWindowRect(rtWin);//获得窗口大小
    this->GetClientRect(rtClient);//获得客户区大小
    //标题栏和外边框的大小
    int nSpanWidth = rtWin.Width()-rtClient.Width();
    int nSpanHeight = rtWin.Height()-rtClient.Height();

    //设置窗口大小
    MoveWindow(0,0,800+nSpanWidth,600 + nSpanHeight);

    CenterWindow();
}


void CLLKDlg::OnBnClickedBtnBasic()
{
    // TODO: 在此添加控件通知处理程序代码
    CDialogEx::ShowWindow(SW_HIDE);
    CGameDlg dlg;
    dlg.DoModal();
}

图片说明
总之希望解决这里各种报”未声明的标识符“问题,有关资源ID我都已经改过与代码中一致了,然而.......
因为老师布置作业要求入了mfc这个坑,请各位前辈菊苣指教,万分感谢.....

5个回答

加上resource.h

顶上加上

 #include "resource.h"  

试试

是不是要清理一下项目。。。

估计是你的DLL文件路径没配对成功,或者你配的DLL版本高于你的VS版本

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问