如何公开链接到共享库(.so)的库(.a)中的入口点

时间:2015-11-04 19:12:06

标签: c++ linux linker shared-libraries

Linux中是否有办法从链接到共享库的库(.a)中公开入口点。

在Windows中使用C / C ++我可以通过以下方式实现此目的,但我找不到适合Linux的相应解决方案。

窗:

库“component.lib”的入口点类似于“Object * CreateInstance()”,是“sharedmain.cpp”的一部分。

创建DLL时,我链接“component.lib”并设置“模块定义文件”,指向包含内容的文件。

EXPORTS
    CreateInstance

这有效地导致DLL具有所需的外部入口点。

Linux:

为Linux构建相同的代码时,我还没有找到实现相同目标的方法。

我尝试过将“sharedmain.cpp”中的库构建到库“libcomponent.a”中,然后将其链接到 共享对象,但这会导致共享对象不从库中公开入口点。

作为一种解决方法,我明确地将“sharedmain.cpp”构建并链接到每个共享对象中。但这不是最佳的,因为我 喜欢隐藏这个实现是一个由多个共享对象使用的库。

我玩过GCC可见性属性(http://www.ibm.com/developerworks/aix/library/au-aix-symbol-visibility/)但是 这没有任何区别。我目前使用“extern”C“属性((visibility(”default“)))” 指定入口点。

有什么想法吗?它有可能吗?

0 个答案:

没有答案