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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言动态库的加载问题!!!!请高手指点!!!!!!!!相关的知识,希望对你有一定的参考价值。

其实是在看一个linux 下so动态库的实例的时候感觉不理解,假如我的main.c里调用一个lib.so里面的函数foo()写main的时候前面dlopen加载好了lib.so后面直接写foo()这样不会报错么???我找遍工程里没有一点对foo的定义就直接用了,我们讨论的是在编译的阶段main没跑起来没加载上so怎么就知道有foo这个玩意???真实编译起来还真的没报错,这个实在不好理解啊

只需要在使用到这些公用函数的源程序中包含这些公用函数的原型声明,然后在用gcc命令生成目标文件时指明动态库名进行编译,gcc将会从动态库中将公用函数连接到目标文件中。并没有你理解的需要main跑起来才会加载so追问

这里讨论的是一个非gcc连接库文件的场合,假设项目组有两个部门支撑组负责动态库文件部分,而且他们在目标机里面先一步下载进去lib.so了,模块组现在在电脑上做一个新的功能的模块下载进目标机,并调用lib.so,支撑组处于保密需求不能把lib.so给其他部门,所以模块组电脑上就没有lib.so也没有办法gcc把库连接进去了,所以用dlopen调用

参考技术A dlopen 是肯定不会“定义”foo的,它只能加载。
肯定有哪里定义过 foo 了。把整个项目 Control-F 一下。

以上是关于c语言动态库的加载问题!!!!请高手指点!!!!!!!!的主要内容,如果未能解决你的问题,请参考以下文章

如何在LABVIEW中调用C语言,具体的操作步骤是啥?请各位大虾指点!!如何再以DAQ的形式发送出去

C语言程序调试,编译的结果总是说我的变量S没有初始化,但是我怎么改都是这个错误,请高手指点一二。

学了一学期C语言,期末老师出了道大的程序设计题,我实在无法完成,请各位C编程高手指点不才,不胜感激。

temp.exe病毒,高手请指点!!!

C语言高手请进

使用Keil开发ARM编程问题,请编程高手指点一下:为啥用了一条#if(1)的预编译指令?1就表示条件为真