静态lib在两个模块中使用的问题

codediscuss 2008-04-02 04:19:54
我有一个静态库c.lib,其中有个全局变量int gC;
在我的程序中,a.exe和b.dll都要用到c.lib.而a.exe通过loadlibrary方式调用b.dll.
现在我发现在a.exe中和b.dll中看int gC居然是两个不同的地址,怎么回事?

怎样让它们地址相同啊,实际上我只想有一份gC的拷贝。这里int gC只是个例子,实际是其他否个复杂类型。
...全文
55 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gomoku 2008-04-02
  • 打赏
  • 举报
回复
上贴有个错字,更改一下:

#pragma data_seg("MyShared")
int g_someData = 0;
double g_otherData = 0.0;
#pragma data_seg()

#pragma comment(linker, "/SECTION:MyShared,RWS")

gomoku 2008-04-02
  • 打赏
  • 举报
回复
多重实例要共享数据也可以

1,告诉编译器你要增加一个数据节:

#pragma data_seg("MyShared")
int g_someData = 0;
double g_otherData = 0.0;
#pragma data_set()

请注意,一定要初始化

2,告诉编译器你要共享那个数据节:
#pragma comment(linker, "/SECTION:MyShared,RWS")

RWS指的是Read Write Share属性




ouyh12345 2008-04-02
  • 打赏
  • 举报
回复
exe和dll的基址不同

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧