微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多次链接DLL时,导出的全局variables会发生什么变化?

假设我在头文件中有一个X.DLL和以下内容

extern __declspec(dllexport) int foobar;

这个foobar全局variables是在一个实现文件中的X.DLL中定义的:

int foobar = 1;

现在假设我有两个DLL,链接到X.DLL A.DLL和B.DLL ,以及使用A.DLL和B.DLL的应用程序E.EXE :

+----> A.DLL ----+ | | E.EXE ----+ +----> X.DLL | | +----> B.DLL ----+

在这种情况下,在A.DLL和B.DLL评估的expression式&foobar ( &foobar地址)是否保证具有相同的值? 换句话说,是X.DLL的全局variables存储了两次还是只有一个foobar实例在整个过程中? 另外,如果在加载时或通过调用LoadLibrary链接DLL,它是否有所作为?

如何在c ++中同步getter和setter方法

其他进程的GetKeyboardLayoutName?

将在Mac上创build的.c文件转换为Windows

在Mono上使用system.windows.forms在Linux上开发

使用libconfig存储encryption的数据

在GCC的dllimport文档中,我也很困惑:

使用此属性一个缺点是,指向标记为dllimport的variables的指针不能用作常量地址。

考虑到我上述的情况,我不太明白这个陈述的含意。

内存使用的一个subprocess?

如何在Linux内核中select“sys”和“proc”文件

Windows相当于POSIX srandom(…)和random()函数

当应用程序运行时,C#检查新的应用程序项目

kernel ram之外的/ dev / mem上的memcpy性能

只有一个副本。 但是,一般来说,这是一个非常糟糕的主意,你会遇到很多问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐