DLL和EXE怎样共享全局变量?

全局共享数据       
  #pragma   data_seg   ("shareddata")    
  HWND   sharedwnd=NULL;//共享数据    
  #pragma   data_seg()         
  编译选项加入   /SECTION:shareddata,rws  
============================
用pragma设置共享数据:   

    
  #pragma   data_seg("MYSEC")  
  char   MySharedData[4096]={0};  
  #pragma   data_seg()   

    
  然后在用户的DEF文件中为有名的数据区设定共享属性。  
  LIBRARY   TEST  
  DATA   READ   WRITE  
  SECTIONS  
  .MYSEC   READ   WRITE   SHARED  
   
  在应用程序(进程)按外部变量引用共享数据。  
  extern   _export"C"{char   *   MySharedData[];}  
  进程中使用该变量应注意间接引用。  
  m_pStatic=(CEdit*)GetDlgItem(IDC_SHARED);  
  m_pStatic->GetLine(0,*MySharedData,80);
=====================================

  //Global.h   In   DLL  
  #pragma   once  
  #include   "StdAfx.h"  
  #pragma   data_seg(".Shared")  
  int   g_nExport   =   33333;  
  CString   g_strExport   =   "DLLEXPORT";  
  #pragma   data_seg()       
  #pragma   comment(linker,"/SECTION:.Shared,RWS")  
如果DLL中定义了共享变量A,EXE1载入DLL,另外一个EXE2也载入DLL,则EXE1里的DLL   和   EXE2里的DLL将可以访问同一个A;而不是EXE1和DLL之间共享,也不是EXE2和DLL之间共享。  
  另外,EXE要访问DLL里的全局变量,则DLL必须把变量export出来,EXE再import,import有隐式或显式
===========================
http://hi.baidu.com/shilyx/blog/item/2017dca29b1777accaefd0e1.html 全局共享变量初始化

posted @ 2009-02-24 17:16  荷包蛋  阅读(6934)  评论(0编辑  收藏  举报