为什么函数存在于.o文件中,但不存在于.so文件中?

时间:2018-07-11 16:33:41

标签: c gcc asterisk

为什么函数MyFunc()存在于.o文件中,却不存在于.so文件中? 示例.o文件:

didEndDisplayingCellAtIndexPath

在.so文件中,我看不到函数“ MyFunc”。

1 个答案:

答案 0 :(得分:0)

我明白了。我的麻烦之所以发生,是因为我错误地声明了声明函数的方法。

我忘了澄清一下,我是从星号1.4传输旧代码。星号13.21。 (http://downloads.asterisk.org/pub/telephony/asterisk/) 注意:在此项目中定义导出功能的方式为asterisk公司(自13版本开始)。 因此,为了使导出的功能在“ .so”文件中可用,这些功能必须在文本文件中明确指定(前缀为“ LINKER_SYMBOL_PREFIX”),该名称与源文件的名称相同,但扩展名为“ .exports.in”,例如:

myfile.h (contains: int MyFunc();)
myfile.c (contains: int MyFunc(){})
myfile.exports.in (contains: LINKER_SYMBOL_PREFIXMyFunc)

编译后,所有需要的功能将在“ myfile.so”中可用。 那是设计。

非常感谢大家。