2

XYZ.dll 定义了一个全局变量 int x。ABC.c 也定义了相同的全局变量 int x。如何将 XYZ.dll 链接到 ABC.exe?全局命名空间中的冲突如何解决?

4

2 回答 2

1

这是一个非常好的问题,我希望它得到一个真正的答案。据我所知,来自 dll 的“全局”符号必须通过关联的头文件显式导入。如果您有两个相同的符号,则在 c 文件中最后定义的符号都是优先的。也就是说,如果您有 ABC.c,并且在顶部,您将导入 XYZ.h,然后定义 int x。您要么从 XYZ.h 中破坏 int x,要么得到编译时错误。

于 2009-07-27T06:17:38.317 回答
0

变量 int x 必须在 XYZ 的头文件中声明为 extern int x。无论您要在何处使用此变量,只需声明此变量即可。就像在 ABC.c 中在全局空间中声明这个变量一样 int x;

于 2009-07-27T06:34:44.617 回答