假设我有一个使用共享对象库 X 的程序,它与我的程序分开编译。现在,当我为 X 编写代码时,我需要引用一个变量,比如 A,它在我的程序中声明(它将使用 X 库)。如何在 X 的代码中引用变量 A?弱引用?外部?还是其他什么技术?
问问题
874 次
2 回答
5
使用extern
关键字:
extern int A;
// later:
call_a_function(A);
A = something_else;
是的,如果共享对象是单独编译的,它就可以工作。在这种情况下,编译器会在内部生成一个带有变量名称的导出符号,然后动态链接器会查找它。
更新:正如@Hristo 指出的那样,此外,您必须-rdynamic
在构建单元时指定链接器标志才能使其工作。
于 2012-06-19T17:15:03.873 回答
4
在编译程序时需要指定-rdynamic标志以使其工作。然后共享对象库可以通过简单地使用extern关键字来引用程序中的变量。
于 2012-06-19T17:35:04.963 回答