当DLL动态分配内存的时候,同时分配一份调用DLL的进程私有的一份DLL声明的静态和全局变量的副本,但是可以定义一段共享的数据段来让所有进程共享数据,C++的实现我知道,但是如何在DELPHI中实现??

解决方案 »

  1.   

    可以直接创建共享内存呀
    CreateFileMapping;
    MapViewOfFile;
      

  2.   

    在 32widnows位程序中,两个应用程序的地址空间却是相互没有关系的。
    DLL在内存中是一份,但变量是存在于在各进程的地址空间中的,所以不能借助dll的全局变量来达到两个应用程序间的数据共享,用上面的方法是最好的
      

  3.   

    to  xybh97102(冰点) :
       变量是存在于在各进程的地址空间中是没错,但是确实有办法的:
      

  4.   

    C++ 中 可以 用以下方法设置段来实现
    #pragma data_seg(".GLOBALS")
    int foo = 1;....
    #pragma data_seg()
      

  5.   

    C/C++中可以很EAZY的实现。但是Delphi中你只能构使用映射文件来实现了。
      

  6.   

    CreateFileMapping;
    MapViewOfFile;
    是这样实现的,具体代码我有的,要的话只能晚上再给你了
      

  7.   

    to ljmanage(过客) :
       谢谢!用CreateFileMapping ,MapViewOfFile 的例程我也有,不过感觉是太麻烦了(对调用DLL的程序来说).
      用C++改写已经完成了.不得不承认,在有些方面C++竟然比DELPHI还简单!不过谢谢大家了!! 现在给分