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“)))” 指定入口点。
有什么想法吗?它有可能吗?