如何用init函数创建dylib

时间:2012-07-20 07:23:46

标签: xcode dylib

我正在尝试在xcode中创建一个dylib。我可以通过在Xcode中选择c / c ++ Library模板来创建dylb。

我想添加" init"这个dylib的方法。我不知道如何添加" init" dylib的方法。

我的想法是打电话给这个" init"在dlopen()的帮助下运行时。

感谢您的宝贵意见。

1 个答案:

答案 0 :(得分:0)

如果您使用C ++编写代码,则可以在dlopen - ed库中拥有静态对象;他们的构造函数在dlopen时被调用(他们的析构函数在dlclose时间运行。

如果您的代码是由gcc编译的(无论是C语言,还是C ++语言,或者甚至是某些其他语言),您可以使用constructordestructor {{3} }

(您可以使用过时的符号_init_fini,但这是dlopen的过时功能(至少在Linux上,可能在MacOSX上)。然后你必须在C ++中声明它们extern "C" void _init(void);。)

不要忘记dlsym处理function attributes,因此您要为其声明extern "C" C ++名称。

您也可以拥有自己的动态加载内容的约定,例如,名为my_initialization的函数,而执行dlopen的代码稍后会使用dlsym来查找它。您应该有关于dlsym编辑符号及其使用方式的文档约定。

我不太了解MacOSX,但我用Google搜索unmangled names