使用两个MFC项目时出现错误C2065
Error C2065 when using two MFC projects
我有一个带有CListCtrl
的对话框,其中包含一些数据,下面是一个按钮。我的第二个项目是一个带有三态复选框的对话框。现在我想将这两个项目结合起来,所以当选择一个列表项并单击按钮时,三态对话框会显示一些内容。
好吧,我将第二个项目添加到另一个项目中,并将其类型更改为.dll,但收到了一个构建错误
error C2065: 'IDD_MFCAPP2_DIALOG' : undeclared identifier
IDD_MFCAPP2_DIALOG
是复选框对话框的id。在添加项目时,两个id都有相同的值,所以我在resource.h
中手动将其更改为不同的值,但这并没有解决问题。这两个项目单独进行效果很好。我想念什么?
更新:我已经将项目减少到最低限度,问题是相同的
MFCApp1Dlg.h
class CMFCApp1Dlg : public CDialogEx
{
// Construction
public:
CMFCApp1Dlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
enum { IDD = IDD_MFCAPP1_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedButtonChange();
CButton m_BtnChange;
};
它的cpp文件只包含标准的东西。只有按钮处理程序调用其他应用程序
void CMFCApp1Dlg::OnBnClickedButtonChange()
{
CMFCApp2Dlg dlg;
if (dlg.DoModal())
{
// do something...
}
}
MFCApp2Dlg.h看起来是相同的
class CMFCApp2Dlg : public CDialogEx
{
// Construction
public:
CMFCApp2Dlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
enum { IDD = IDD_MFCAPP2_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
};
rc文件也不是引人注目的
IDD_MFCAPP1_DIALOG DIALOGEX 0, 0, 315, 151
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_THICKFRAME
EXSTYLE WS_EX_APPWINDOW
CAPTION "MFCApp1"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
DEFPUSHBUTTON "OK",IDOK,76,119,50,14
PUSHBUTTON "Cancel",IDCANCEL,157,117,50,14
PUSHBUTTON "Push me!",IDC_BUTTON_CHANGE,121,44,50,14
END
和
IDD_MFCAPP2_DIALOG DIALOGEX 0, 0, 203, 101
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_THICKFRAME
EXSTYLE WS_EX_APPWINDOW
CAPTION "MFCApp2"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
DEFPUSHBUTTON "OK",IDOK,46,64,50,14
PUSHBUTTON "Cancel",IDCANCEL,109,65,50,14
CONTROL "Check1",IDC_CHECK1,"Button",BS_AUTO3STATE | WS_TABSTOP,51,17,39,10
CONTROL "Check2",IDC_CHECK2,"Button",BS_AUTO3STATE | WS_TABSTOP,51,39,39,10
END
任何建议都会很有帮助。
更新2:
Resource.h of App1
#define IDD_MFCAPP1_DIALOG 102
#define IDR_MAINFRAME 128
#define IDC_BUTTON_CHANGE 1000
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 129
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
和App2的Resource.h
#define IDD_MFCAPP2_DIALOG 202
#define IDR_MAINFRAME 228
#define IDC_CHECK1 2000
#define IDC_CHECK2 2001
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 229
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 2002
#define _APS_NEXT_SYMED_VALUE 201
#endif
#endif
消息只是告诉您ID是未知标识符。所以只是不知道。通常情况下:
确保包含了正确的resource.h文件,并确保在resource.h 中定义了ID
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法在 CLion 中构建 C++ 项目
- 运行同一解决方案的另一个项目的项目
- CMake-按正确顺序将项目与C运行时对象文件链接
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 欧拉项目#8答案是大以获得有效答案
- 从链接列表c++中删除一个项目
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 既然存在危险,为什么项目要使用-I include开关
- cmake在我的项目中所需的所有静态库都不成功
- QT通过C++添加映射QML项目
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 在linux上调试巨大的C++项目
- 在其他文件中创建类时在 c++ 项目中不起作用
- 使外部项目可用于find_package CMake
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 如何维护资源管理器项目视图中当前可见的项目列表
- 使用两个MFC项目时出现错误C2065