可以使用导入导出宏。
在DLL中*.cpp如下定义:
_declspec(dllexport)  int g_iYourVar=0;      //
在EXE中如下引用:
_declspec(dllimport)  int g_iYourVar;      //
注意全局变量不可定义在一个*.h中,然后在DLL和EXE中分别#include,如果这样,全局变量的
变化不能在DLL和EXE中得到体现。

解决方案 »

  1.   

    turongguo(无痕雨): 
    好象不行,EXE中出现了这样的错误:error LNK2001: unresolved external symbol "__declspec(dllimport) int g_iYourVar" (__imp_?m_f10key@@3HA)
      

  2.   

    turongguo(无痕雨): 
    好象不行,EXE中出现了这样的错误:error LNK2001: unresolved external symbol "__declspec(dllimport) int g_iYourVar" (__imp_?m_f10key@@3HA)
      

  3.   

    注意上面的使用方法是静态调用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;
      

  4.   

    在同一个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()
    修改或者获取同上
    ……
    试试吧,有什么出入,尽快通知
      

  5.   

    我按turongguo(无痕雨)的方法做了,再把*.lib加好,就没出现LINK2001的错误了,可是经我测试,该变量在aafun1()中是反映了在B中的变化,可是当它到了aafunc2()中时,却有回到了初始值,没反映B中的变化,这是为什么?
      

  6.   

    killingfield(灵胡) :你说的方法中,g_GlobalVal在EXE中怎么引用,是直接引用吗?(我是说在你说的第一种情况下)