- 25
- 0
- 约2.13万字
- 约 6页
- 2016-08-22 发布于河南
- 举报
Dll 模块间(dll, exe)使用导出变量、静态变量和外部变量的试验与结论
Dll 模块间(dll, exe)使用导出变量、静态变量和外部变量的试验与结论
[原]模块间(dll, exe)使用导出变量、静态变量和外部变量的试验与结论
Technorati 标签: vc,模块,导出变量,静态变量,外部变量
// Dll头文件声明
AFX_EXT_DATA int D1_nCount;
extern int D1_nCountE;
static int D1_nCountS = 0;
AFX_EXT_API int D1_GetCount();
// 结论:多模块调用时,或重复调用时,模块内的静态变量是唯一的,不会重复分配内存
int nCount = D1_GetCount();
nCount = D2_GetCount();
nCount = D1_GetCount();
// 结论:dll中声明的静态变量在每个使用的cpp下均有一份拷贝,多模块更是如此(静态变量在编译时会分别拷贝)
nCount = D1_nCountS;
D1_nCountS = 2;
// 结论:dll中声明的外部变量不能用于其他模块,链接失败(基地址都不一样,肯定不行)
nCount = D1_nCountE;
D1_nCountE = 2;
// 结论:dll中导出的数据到处都可以用,在模块内部只有一份拷贝,每个用到的模块各有一份拷贝
nCount = D1_n
原创力文档

文档评论(0)