1。Q:假如甲写了个test.dll,乙也写了个test.dll.
   2个dll中都有一个同名共享数据,如下
   #pragma data_seg("segtest")
   int g_test = 0;
   #pragma data_seg()   SETCTIONS
      segtest READ WRITE SHARED  并且分别有函数changeData甲(),changeData乙(),来修改2个DLL中g_test的值.  两个进程分别调用这两个DLL时,g_test,get_g_test甲(),changeData乙()会不会冲突?   A:两个进程分别调用这两个DLL时,不会冲突2。Q:当一个进程同时调用这两个DLL时(将2个DLL分别改名为testA.dll,testB.dll),会不会冲突?
   A:changeData甲(),changeData乙()修改的是各自的g_test,不会冲突总结:无论如何,进程调用的不同DLL(包括仅名字不同的DLL,或仅所在目录不同的DLL)中的数据、函数是不会冲突的。欢迎指点!

解决方案 »

  1.   

    当然不会冲突了!
    我想一个进程是这样调用他们的:
    比如加载a.dll后,a.dll中的g_test在偏移量 0x00000001处。
    然后加载b.dll,b.dll中的g_test在偏移量0x00000002处。其他进程调用方式一样,每个进程中都有一份两个变量的副本,当一个变量改变时,其他进程的副本也要变化,我想。
      

  2.   

    绝对不会冲突
    两个进程分别调用这两个DLL时,g_test,get_g_test甲(),changeData乙()会不会冲突?
    每个进程都有属于自己的内存区,得到的资源都会在自己的内存区中去分配空间,所以互相不会干扰
    当一个进程同时调用这两个DLL时(将2个DLL分别改名为testA.dll,testB.dll),会不会冲突?
    同样,这次虽然是在同一进程中,但因为dll的名字不同,所以当作不同的资源来分配跟它们自己的空间,一样不会冲突
      

  3.   

    这里有个问题,在第2种情况,一个进程同时调用2个DLl时,怎么指定使用哪个DLL的g_test呢?