Pavel and Chunrong, thanks to both of you. Making this "var" in a separate DLL should have no problem. I will try this method. Regards, Ligang On 9/1/08, Pavel Pervov wrote: > > What Chunrong proposes is implementation specific. > > The only correct way is to have this "var" in a separate DLL. That is > why port_ch was separated from static part of port library - it has > data shared across different dynamic libraries. > > WBR, > Pavel. > > On Mon, Sep 1, 2008 at 6:06 AM, Ligang Wang wrote: > > Hi, all, > > > > > > I encountered a problem after adding some code into DRLVM. The following > is > > a simplified example for the problem: > > > > In static library A, there is a header file A.h and a C file A.c. > > > > > > In A.h: > > extern function1(); > > > > > > In A.c: > > > > (static) var; // a static or global variable > > > > Function1() > > > > { > > > > …… > > > > Function2(); > > > > …… > > > > } > > > > Function2() > > > > { > > > > Access var; > > > > } > > > > > > > > Several DLLs include A.h and call function1. And the final executable > uses > > all these DLLs. > > > > > > > > The question here is, will each DLL allocate a memory unit for var? And > what > > memory address will each DLL reference for var? Is there any difference > > between the static case and global case for the memory allocation > problem? > > > > > > Actually in Harmony library A is the port module and those DLLs stand for > > vmcore, gc_gen, JNI, etc. While debugging I found that a static variable > I > > defined in the port module has different addresses when accessed from > > different DLLs. Changing it to a global variable has no impact on this. > > > > Anyone can help me? Thanks in advance. > > > > Regards, > > Ligang > > >