c语言动态库的加载问题!!!!请高手指点!!!!!!!!

其实是在看一个linux下so动态库的实例的时候感觉不理解,假如我的main.c里调用一个lib.so里面的函数foo()写main的时候前面dlopen加载好了lib.... 其实是在看一个linux 下so动态库的实例的时候感觉不理解,假如我的main.c里调用一个lib.so里面的函数foo()写main的时候前面dlopen加载好了lib.so后面直接写foo()这样不会报错么???我找遍工程里没有一点对foo的定义就直接用了,我们讨论的是在编译的阶段main没跑起来没加载上so怎么就知道有foo这个玩意???真实编译起来还真的没报错,这个实在不好理解啊 展开
 我来答
漠影歌
2015-08-12 · TA获得超过807个赞
知道小有建树答主
回答量:483
采纳率:50%
帮助的人:450万
展开全部
只需要在使用到这些公用函数的源程序中包含这些公用函数的原型声明,然后在用gcc命令生成目标文件时指明动态库名进行编译,gcc将会从动态库中将公用函数连接到目标文件中。并没有你理解的需要main跑起来才会加载so
追问
这里讨论的是一个非gcc连接库文件的场合,假设项目组有两个部门支撑组负责动态库文件部分,而且他们在目标机里面先一步下载进去lib.so了,模块组现在在电脑上做一个新的功能的模块下载进目标机,并调用lib.so,支撑组处于保密需求不能把lib.so给其他部门,所以模块组电脑上就没有lib.so也没有办法gcc把库连接进去了,所以用dlopen调用
建氏文生
2015-08-12 · 永远在学习的道路上不断前进
建氏文生
采纳数:499 获赞数:1345

向TA提问 私信TA
展开全部
dlopen 是肯定不会“定义”foo的,它只能加载。
肯定有哪里定义过 foo 了。把整个项目 Control-F 一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式