一个函数没有实现,被so/a调用不会报错,为什么?

goalcn 2018-11-01 02:53:43
在linux的动态库或静态库里声明一个函数比如func,然后调用func。但是func函数体没有实现。该so或者a完全可以编译通过。
但是在windows下肯定编译不通过。
这是什么情况导致的?

linux 库:

void func();//只是声明,并没有实现

void main()
{
func();//调用
}
...全文
279 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tq1086 2018-11-11
  • 打赏
  • 举报
回复
编译阶段只是“声称要调用”,没有发生实际调用。
loe 2018-11-09
  • 打赏
  • 举报
回复
如果要做成动态库(-shared),func会被标记为U,即未实现的函数(意思是这个函数可能在别的.so或者程序里实现的) 换句话说,如果调用这个动态库,执行func的话,这个动态库会在别的地方找func的实现并且执行
老马何以识途 2018-11-05
  • 打赏
  • 举报
回复
windows也有動態鏈接庫和靜態鏈接庫,按規則實現即可。

23,114

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧