vc如何使用外部变量

xianglin134 2011-07-08 04:47:59
下面做如下解释:
1)首先在一个.cpp中定义一个你要使的变量,如:
int tt;
2)在别的.cpp中(你要用到m_Extern的地方)加入:
extern int tt;
即可.(对所有类型都适合)

可是我按上述方法做不好使,为什末?
大哥:不好使呀,错误如下:
Linking...
PicView.obj : error LNK2001: unresolved external symbol "class CString vID" (?vID@@3VCString@@A)
Debug/抚顺市开发区.exe : fatal error LNK1120: 1 unresolved externals
...全文
422 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
ywwj5858792qd 2011-07-18
  • 打赏
  • 举报
回复
你可以看看MFC的程序,很多都是这么用的。只是2 在对应的头文件*.h中声明外部变量 extern CString a
这个extern CString a 放在类定义的外面,不要放在类里面去
[Quote=引用 15 楼 jiangyuer_xx 的回复:]
这个问题可能是头文件的包含重复导致的。
使用extern应该遵循:
1 在*.cpp中定义外部变量 例如CString a
2 在对应的头文件*.h中声明外部变量 extern CString a
3 在引用a变量的文件中包含*.h
[/Quote]
clown 2011-07-18
  • 打赏
  • 举报
回复
你要定义外部变量 在本cpp文件中 定义 int i=0;
在其他CPP文件中要使用这个i变量 必须 用extern int i; 同时这个i已经被定义为零
定义只能一次 声明可以多次
你的错误 是该外部变量没有定义
psl_87 2011-07-18
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 hanbo79 的回复:]
支持7楼

引用 7 楼 ndy_w 的回复:


1)首先在一个.h中定义一个你要使的变量,如:
CString tt;
-------------------------------------
变量的申明可以多次,定义只能一次。
这个不应该放在.h中,应该在.cpp里
[/Quote]
我觉得不是这个问题
以下是我刚试过的
在a.cpp中某函数中定义
int tt;
在a.h中声明
extern int tt
在b.cpp中某函数引用tt变量
即会出现LINK2001错误
如果是在a.cpp里直接定义,不包括在任何函数里,即正常
  • 打赏
  • 举报
回复
支持7楼

引用 7 楼 ndy_w 的回复:


1)首先在一个.h中定义一个你要使的变量,如:
CString tt;
-------------------------------------
变量的申明可以多次,定义只能一次。
这个不应该放在.h中,应该在.cpp里
psl_87 2011-07-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 xianglin134 的回复:]
下面做如下解释:
1)首先在一个.cpp中定义一个你要使的变量,如:
int tt;
2)在别的.cpp中(你要用到m_Extern的地方)加入:
extern int tt;
即可.(对所有类型都适合)

可是我按上述方法做不好使,为什末?
大哥:不好使呀,错误如下:
Linking...
PicView.obj : error LNK2001: unresolved……
[/Quote]
我也遇到了楼主一样的问题,一样的LINK 2001,我估计是楼主把int tt定义在.cpp文件中的某个函数里了,在函数体外定义int tt就没有问题,但对于MFC工程来说,好像没见到过在函数体外直接定义变量的,一般都是在类和函数内定义
唉,我也郁闷啊,好像没法从一个函数里调用另一个函数内的变量
岚先森 2011-07-18
  • 打赏
  • 举报
回复
A.h中:
int tt;
B.h中:
CA a;
B.cpp中;
a.tt;
在B。CPP中可以得到
A.CPP中的 TT的值 可以吗 ?

jiangyuer_xx 2011-07-14
  • 打赏
  • 举报
回复
这个问题可能是头文件的包含重复导致的。
使用extern应该遵循:
1 在*.cpp中定义外部变量 例如CString a
2 在对应的头文件*.h中声明外部变量 extern CString a
3 在引用a变量的文件中包含*.h

dragon88lin 2011-07-14
  • 打赏
  • 举报
回复
使用extern引入
xiaojunjun1202 2011-07-14
  • 打赏
  • 举报
回复
CPP里?
pcgg5244 2011-07-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ndy_w 的回复:]
1)首先在一个.h中定义一个你要使的变量,如:
CString tt;
-------------------------------------
变量的申明可以多次,定义只能一次。
这个不应该放在.h中,应该在.cpp里
[/Quote]
+
顺便说下,tt这个变量名取的很邪恶
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ndy_w 的回复:]

1)首先在一个.h中定义一个你要使的变量,如:
CString tt;
-------------------------------------
变量的申明可以多次,定义只能一次。
这个不应该放在.h中,应该在.cpp里
[/Quote]

这个回答是对症的
liujinquan1981 2011-07-14
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 crybird 的回复:]

引用 7 楼 ndy_w 的回复:

1)首先在一个.h中定义一个你要使的变量,如:
CString tt;
-------------------------------------
变量的申明可以多次,定义只能一次。
这个不应该放在.h中,应该在.cpp里


这个回答是对症的
[/Quote]
也可以在.h文件里定义,在别的.cpp文件里引用
xiaojunjun1202 2011-07-14
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 pcgg5244 的回复:]
引用 7 楼 ndy_w 的回复:
1)首先在一个.h中定义一个你要使的变量,如:
CString tt;
-------------------------------------
变量的申明可以多次,定义只能一次。
这个不应该放在.h中,应该在.cpp里

+
顺便说下,tt这个变量名取的很邪恶
[/Quote]

我才是心翼 2011-07-13
  • 打赏
  • 举报
回复
结贴吧。。。
步履人生 2011-07-10
  • 打赏
  • 举报
回复
要用include吧?
我才是心翼 2011-07-10
  • 打赏
  • 举报
回复
#include "源文件名.h"
wj19781215 2011-07-09
  • 打赏
  • 举报
回复
把该变量申明为静态变量
static CString tt;

有可能你头文件include乱了,加#pragma once
ndy_w 2011-07-08
  • 打赏
  • 举报
回复
1)首先在一个.h中定义一个你要使的变量,如:
CString tt;
-------------------------------------
变量的申明可以多次,定义只能一次。
这个不应该放在.h中,应该在.cpp里
酒红色的泪 2011-07-08
  • 打赏
  • 举报
回复
在头文件中使用#pragma once 防止被多次引用
xianglin134 2011-07-08
  • 打赏
  • 举报
回复
不好意思,我更正一下问题:

下面做如下解释:
1)首先在一个.h中定义一个你要使的变量,如:
CString tt;
2)在别的.h中(都是一个工程)加入:
extern CString tt;

可是我按上述方法做不好使,为什末?
大哥:不好使呀,错误如下:
Linking...
myclient.obj : error LNK2005: "class CString tt" (?dest_ipAddr@@3VCString@@A) already defined in Chart.obj
Debug/抚顺市开发区.exe : fatal error LNK1120: 1 unresolved externals
加载更多回复(4)

16,471

社区成员

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

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

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