Mac OS X:通过添加功能扩展共享库

时间:2011-06-30 17:18:52

标签: c macos shared extend

我想通过添加一个函数在Mac OS X上扩展共享c库(dylib)。我们调用函数const char *get_string(void)。这是我的方法:

我创建了一个包含get_string(void)函数的新共享库,并将其与我想要扩展的库相比较。可以这么说是一个库包装器。到现在为止还挺好。下一步是将应用程序链接到我的新扩展库,但问题是扩展库只导出符号_get_string,而不导出原始库的那些符号。这就是为什么链接“扩展”库(而不是原始库)会产生大量未解决的符号警告/错误。

有没有办法导出原始库的所有符号(有很多)或者有更好的方法来解决问题。基本上我只想扩展现有的库。顺便说一句,我可以访问原始库的源代码,但我不能只重新编译它。

提前致谢!

1 个答案:

答案 0 :(得分:2)

ld的这个选项怎么样:

     -reexport-lx
             This is the same as the -lx but specifies that the all symbols in library x should
             be available to clients linking to the library being created.  This was previously
             done with a separate -sub_library option.