在主框架中如何声明 一个引用文件中的类对象

zlog 2009-07-24 06:18:10
大家好,向大家请教一个问题,小弟作为新手 不胜感谢

建立了一个基于对话框的工程 MFCl
在MFClDlg.h的文件中说明了 SerialPort.h文件(已经将SerialPort.h,SerialPort.cpp添加到工程中去了),
在SerialPort.h中有这样一个类CSerialPort, 在MFClDlg.h中定义类对象CSerialPort,一直定义错误,

如下:
// MFClDlg.h : header file
//

#if !defined(AFX_MFCLDLG_H__209C98ED_BBB5_42A6_ACEA_30E530755427__INCLUDED_)
#define AFX_MFCLDLG_H__209C98ED_BBB5_42A6_ACEA_30E530755427__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER >

#include "SerialPort.h"//应用声明的Serial Port.h

/////////////////////////////////////////////////////////////////////////////
// CMFClDlg dialog
CSerialPort m_SerialPort;// 声明CSerialPort 类对象 出错

class CMFClDlg : public CDialog
{

public:
CMFClDlg(CWnd* pParent = NULL); // standard constructor

// Dialog Data
//{{AFX_DATA(CMFClDlg)
enum { IDD = IDD_MFCL_DIALOG };
CComboBox m_ctrlComboComPorts;
CString m_strEditReceiveMsg;
CString m_ctrlComboComPort;
//}}AFX_DATA
。。。。。。。。。



出现的错误是:
MFClDlg.obj : error LNK2005: "class CSerialPort m_SerialPort" (?m_SerialPort@@3VCSerialPort@@A) already defined in MFCl.obj
MFClDlg.obj : error LNK2005: "class CSerialPort m_SerialPort" (?m_SerialPort@@3VCSerialPort@@A) already defined in MFCl.obj
Debug/MFCl.exe : fatal error LNK1169: one or more multiply defined symbols found
...全文
73 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
marrco2005 2009-07-24
  • 打赏
  • 举报
回复
全局变量不应该定义在头文件里。
这样修改
头文件:
#include "SerialPort.h"//应用声明的Serial Port.h

/////////////////////////////////////////////////////////////////////////////
// CMFClDlg dialog
extern CSerialPort m_SerialPort;// 这是一个声明

class CMFClDlg : public CDialog
{

public:
CMFClDlg(CWnd* pParent = NULL); // standard constructor

然后再CMFClDlg的cpp文件里添加定义
CSerialPort m_SerialPort;

bigriverhorse 2009-07-24
  • 打赏
  • 举报
回复
查一下MFCl.obj是什么cpp文件生成的,编译器告诉你,这个cpp文件也定义了CSerialPort m_SerialPort全局变量,所以编译不过。
mfc168 2009-07-24
  • 打赏
  • 举报
回复
注释掉 #include "SerialPort.h"//应用声明的Serial Port.h

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧