2011-06-30 60 views
2

我想通过添加函数来扩展Mac OS X上的共享c库(dylib)。我们称之为功能const char *get_string(void)。这是我的做法:Mac OS X:通过添加函数来扩展共享库

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

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

在此先感谢!

回答

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. 
+0

坦克,听起来不错,但它并没有为我工作。我使用Xcode并将属性“Other Linker Flags”设置为“-L/usr/local/lib -reexport-lparent”,其中应扩展libparent.dylib。似乎libtool没有通过再输出标志。父库甚至没有链接。你有什么建议吗? – Benjamin

+0

sub_library标志被识别,但nm仍然没有列出父库的符号 – Benjamin

+0

sub_library标志完美地工作。 – Benjamin