不解,shared dll工程中的全局变量

devinside 2006-04-27 11:02:31
想在shared dll的一个工程中全程监视一个变量,在stdafx.h中写int x;在stdafx.cpp中写extern int x = 1 ;是这样吧?可是为什么程序在XXApp::InitInstance()中可见,进入了CMDIFrameWnd::LoadFrame()就看不见了?而如果工程是static libary就一直可见。
...全文
186 15 打赏 收藏 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
fifaboy00 2006-05-08
  • 打赏
  • 举报
回复
不好意思,过51了,没看见.....我继续说说哈。
其实这个不是解决方法,我说的是你实验一下这样,来体会一下这个问题(就是什么时候这个全局变量是可以看见的。)
所以我感觉如果你选择了动态的话,这样全局的变量就很难看见了.我也没有什么好方法,还需要继续问高人.不好意思啊。
devinside 2006-05-08
  • 打赏
  • 举报
回复
呵呵,我再考虑一下别的方法吧,多谢18哥了
devinside 2006-05-08
  • 打赏
  • 举报
回复
呵呵,我再考虑一下别的方法吧,多谢18哥了
devinside 2006-05-01
  • 打赏
  • 举报
回复
基本上明白了,是我对静态和动态链接没有理解,谢谢楼上的。不过对于你说的解决方法这一段还是不知道怎么实现
-----------------------
我继续啊,其实你把你的一个其他的类里面不EXTERN这个全局变量,但是在监视窗口添加这个变量,你看,你看。。。看见了吧??还是可以使用的~尽管在代码里面不能编译,但是监视窗口是可以的。
-----------------------
18哥看到再帮解释一下吧
fifaboy00 2006-04-30
  • 打赏
  • 举报
回复
楼主啊,这个问题....分数多了呵呵。
我解释下吧,希望你能满足(错了,是满意哈哈。)

首先用STATIC的情况就是所有的原代码都需要进行编译(这些包括库的代码,要不怎么叫静态呢。。。)
但是用DLL那么就是利用现在已经弄好的,系统都有了。。。。没有进行编译。

明白了吧??(当然没明白了哈哈。对不对???)

我继续啊,其实你把你的一个其他的类里面不EXTERN这个全局变量,但是在监视窗口添加这个变量,你看,你看。。。看见了吧??还是可以使用的~尽管在代码里面不能编译,但是监视窗口是可以的。

所以,当库文件没有编译的时候,就相当于不知道这个变量(当然了,他没有看见声明啊,仅仅是把代码弄出来给你看而已。)而当他编译的时候,就能看见这个变量了,尽管库文件没有声明这个变量。。。
明白没有?再不明白可以.....继续顶吧,别加分了。不值得。
devinside 2006-04-29
  • 打赏
  • 举报
回复
+分再UP
ttfy1234 2006-04-28
  • 打赏
  • 举报
回复
而到了winfrm,wincore等文件就不行了啊。。

这也能行?
这两个是什么文件啊!
zh2817 2006-04-28
  • 打赏
  • 举报
回复
反过来不行么?或者
定义为:stdafx.h:
static int x;
stdafx.cpp:
int x = 1;
devinside 2006-04-28
  • 打赏
  • 举报
回复
再up,没人帮我试试吗?
devinside 2006-04-28
  • 打赏
  • 举报
回复
你们别光说行不行,试一试不就知道了。。
devinside 2006-04-28
  • 打赏
  • 举报
回复
倒,当然是系统内部文件啦,可以在App文件的
if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
这一行加个断点,F11进去就说我的变量没有定义,而如果工程设置成using static libary就能够监视
devinside 2006-04-27
  • 打赏
  • 举报
回复
还是不行啊,反着也试了,闹的现在都不知道extern写哪儿了。
楼上两位说的是否是这么写:
//stdafx.h
extern int x ;
//stdafx.cpp
int x = 1 ;
不行的,在工作区的app,mainframe,view,doc这些文件里能监视到,而到了winfrm,wincore等文件就不行了啊。。
an_bachelor 2006-04-27
  • 打赏
  • 举报
回复
本來就是要反過來的
bobob 2006-04-27
  • 打赏
  • 举报
回复
在stdafx.h中写int x;在stdafx.cpp中写extern int x = 1 ;

反过来试试
devinside 2006-04-27
  • 打赏
  • 举报
回复
翻页了,UP

16,550

社区成员

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

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

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