Met*_*est 2 c linux gcc shared-libraries
假设我有一个使用共享对象库X的程序,它与我的程序分开编译.现在,当我为X编写代码时,我需要引用一个变量,比如A,它在我的程序中声明(将使用X库).如何在X代码中引用变量A?弱参考?extern关键字?还是其他一些技巧?
小智 5
使用extern关键字:
extern int A;
// later:
call_a_function(A);
A = something_else;
Run Code Online (Sandbox Code Playgroud)
是的,如果共享对象是单独编译的,它可以工作.在这种情况下,编译器在内部生成一个带有变量名称的导出符号,动态链接器会查找它.
更新:正如@Hristo指出的那样,此外,-rdynamic在构建单元时必须指定链接器标志才能使其工作.