怎样设置这样的全局变量

whitedwang 2001-12-24 01:52:32
我想设置一个全局变量,让他被两个工程中的两个CPP文件所共享,该怎么设置?
如:一个DLL工程A,一个是EXE工程B,B中的 bb.cpp中要用到一个变量gobal,
而且要用到A中的aa.cpp中的函数aafun1(),而A中的aafun1()函数要调用aafun2()
在aafun2()中要对变量gobal进行判断,这个gobal要能反映在B工程中的变化,该

如何设置这个全局变量呢?
...全文
157 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
whitedwang 2001-12-25
  • 打赏
  • 举报
回复
有人知道吗
whitedwang 2001-12-25
  • 打赏
  • 举报
回复
killingfield(灵胡) :你说的方法中,g_GlobalVal在EXE中怎么引用,是直接引用吗?(我是说在你说的第一种情况下)
whitedwang 2001-12-25
  • 打赏
  • 举报
回复
我按turongguo(无痕雨)的方法做了,再把*.lib加好,就没出现LINK2001的错误了,可是经我测试,该变量在aafun1()中是反映了在B中的变化,可是当它到了aafunc2()中时,却有回到了初始值,没反映B中的变化,这是为什么?
killingfield 2001-12-24
  • 打赏
  • 举报
回复
在同一个EXE中加载DLL
如:
DLL中:
static int g_nGlobalVal;
_declspec(dllexport) int Modify(int nInput);
_declspec(dllexport) int Get(int nInput);
EXE中:
_declspec(dllimport)……
_declsprc(dllimport)……

如果要在多个DLL或者EXE之间共享则可以:
#pragma data_seg("Shared")
int g_GlobalVal;
#pragma data_seg()
修改或者获取同上
……
试试吧,有什么出入,尽快通知
turongguo 2001-12-24
  • 打赏
  • 举报
回复
注意上面的使用方法是静态调用DLL。如果你是这中情况,请检查下列步骤。
静态使用
导入类的声明:
1.DLL工程的声明最好为扩展MFC类型;
2.在DLL中有以下类声明
//MyClass.h
class AFX_EXT_CLASS CMyClass
{
............

};
3.在使用DLL的类的工程中,需要以下配置
A.在Project|Setting中的Link标签页的Object/library Modules 中加入*.lib
B.在Tools|Options中的Directories 标签页中的 Show directories for:下面的
Include files 中增加Myclass.h的路径;Lib files中增加*.lib 和*.dll路径。
C.在使用工程的代码中如下即可:
#include "MyClass.h"
......
CMyClass MyClass;
wwwsq 2001-12-24
  • 打赏
  • 举报
回复
需要静态连接yourdll.lib
whitedwang 2001-12-24
  • 打赏
  • 举报
回复
turongguo(无痕雨): 
好象不行,EXE中出现了这样的错误:error LNK2001: unresolved external symbol "__declspec(dllimport) int g_iYourVar" (__imp_?m_f10key@@3HA)
whitedwang 2001-12-24
  • 打赏
  • 举报
回复
turongguo(无痕雨): 
好象不行,EXE中出现了这样的错误:error LNK2001: unresolved external symbol "__declspec(dllimport) int g_iYourVar" (__imp_?m_f10key@@3HA)
whitedwang 2001-12-24
  • 打赏
  • 举报
回复
我试一下
turongguo 2001-12-24
  • 打赏
  • 举报
回复
可以使用导入导出宏。
在DLL中*.cpp如下定义:
_declspec(dllexport) int g_iYourVar=0; //
在EXE中如下引用:
_declspec(dllimport) int g_iYourVar; //
注意全局变量不可定义在一个*.h中,然后在DLL和EXE中分别#include,如果这样,全局变量的
变化不能在DLL和EXE中得到体现。
whitedwang 2001-12-24
  • 打赏
  • 举报
回复
没有人知道吗/大家帮帮忙

16,550

社区成员

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

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

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