要实现一个dll从串口读数据,然后可以用多个应用程序同时得到这个dll从串口中读出来的数据,要如何实现,请高手指点一下

解决方案 »

  1.   

    共享数据段:
    #pragma data_seg("SHARE" )   
          int   a   =   0;//这个能共享.   
      #pragma   data_seg()   
        
      #pragma   comment(linker, "/SECTION:SHARE,RWS"   )
      

  2.   

    这种方法我试过了,不能实现,因为我要的是多个应用程序加载的虽然是同一个应用程序编译出来的dll文件,但是他们加载的并不是同一个dll文件,这种共享好象是实现不了
      

  3.   

    不明白为什么不行, 不明白你说的.DLL只要加载一次就可以了, 然后映射到不同应用程序进程的地址空间呀, 共享数据段不行?
      

  4.   

    在dll种开filemapping吧,应该没问题
      

  5.   

    crumpy() ( ) 信誉:100 我的要求是任意一个应用程序,比如d:盘有一个程序A,e盘有一个程序B,程序A调用d:盘程序A目录下的my.dll,程序B调用e:盘程序B目录下的my.dll,这两个dll是同一个程序编译出来的,可是是两个文件,我用上面的方法,没有办法实现共享adrianx(蓝色心情)我也想过开filemapping,那样应该是可以的,只是我想如果能共享数据可能会更方便些
      

  6.   

    我的这个功能是要在windows CE上实现,可是windows CE并不支持filemapping,请问还有什么方法实现
      

  7.   

    你这是两个DLL啊,不是同一个DLL啊,我是没有办法,又不许用内存映射文件,
      

  8.   

    MSDN说CreateFileMapping是可以支持的Windows CE OS 1.01 and later Winbase.h   Coredll.lib, Nk.lib 
      

  9.   

    如果不存在特定socket服务程序 那么创建一个这个服务
    使用这个服务程序去读取串口数据并保存
    程序中连接socket服务程序去获取数据上面的过程都可以封装到dll中,代码可以单一化
    curelex(M) 的直接写文件也是可以的