C++ 使用两个MFC项目时出现错误C2065
我有一个对话框,里面有一些数据,下面是一个按钮。我的第二个项目是一个带有三态复选框的对话框。现在我想将这两个项目耦合起来,所以当选择一个列表项并单击按钮时,三态对话框会显示一些内容 我将第二个项目添加到另一个项目中,并将其类型更改为.dll,但收到一个生成错误C++ 使用两个MFC项目时出现错误C2065,c++,mfc,C++,Mfc,我有一个对话框,里面有一些数据,下面是一个按钮。我的第二个项目是一个带有三态复选框的对话框。现在我想将这两个项目耦合起来,所以当选择一个列表项并单击按钮时,三态对话框会显示一些内容 我将第二个项目添加到另一个项目中,并将其类型更改为.dll,但收到一个生成错误 错误C2065:“IDD\u MFCAPP2\u对话框”:未声明的标识符 IDD_MFCAPP2_DIALOG是复选框对话框的id。添加项目时,两个id的值相同,因此我在resource.h中手动将其更改为另一个id,但这并没有解决问题。
错误C2065:“IDD\u MFCAPP2\u对话框”:未声明的标识符
IDD_MFCAPP2_DIALOG
是复选框对话框的id。添加项目时,两个id的值相同,因此我在resource.h
中手动将其更改为另一个id,但这并没有解决问题。这些项目单独进行时效果很好。我错过了什么
更新:
我已经把项目减少到最低限度,问题也是一样的
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()
};
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
及
任何建议都会有帮助
更新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,而没有看到任何代码(理想情况下是an),几乎不可能告诉您出了什么问题。我更新了我的问题。如果该
IDD\u MFCTRISTATECHKBOX_对话框
应该在某个地方使用,那为什么它既不显示在.rc文件中,也不显示在你的.h文件中?哦,对不起。这只是一个新的解决方案。我的意思是IDD\u MFCAPP2\u对话框
,当然,这是在哪里定义的?应该有定义常量的头文件吗?通常类似于xyzRes.h的内容-可能您缺少该文件?当然,两个ID都已定义。此外,我将包含的资源路径更改为“\resource.h”,但没有成功…请使用/showincludes选项查看resource.h文件是否确实包含在内。哪一个呢。您确定已将include放在stdafx.h include之后吗?