编译 库链接实例(动态库 隐式显式)

原创 2017年10月15日 15:12:43

代码结构:


main.c

#include <stdio.h>
#include "help.h"
int main()
{
  printf("%d\n", test(250));
  return 0;
}
main1.c

#include <stdio.h>
#include <dlfcn.h>

int main()
{
int ret = 1;
void *pHandle;
int (*pFunc)(int );

pHandle = dlopen("./cj.so", RTLD_NOW);
if (!pHandle)
{
printf("Cann't find cj.so\n");
return 1;
}
pFunc = (int (*) (int )) dlsym(pHandle, "test");
if(pFunc)
{
printf("result is %d\n",pFunc(250));

}
else
{
printf("Cann't find func test\n");
}
dlclose(pHandle);
return 0;
}
help.c

#include <stdio.h>
#include "help.h"
int test(int num){
return num*2;
}

help1.c

#include<stdio.h>
#include "help.h"
int test(int a)
{
return a*3;
}
help.h

#ifndef HELP_H
#define HELP_H

int test(int );

#endif


编译 链接:



使用 -I 指定main.c中使用到的头文件的路径(若和main.c在同一目录,可以不使用)

静态库的使用



-L 指定静态库路径


动态库 的 隐式链接:记得带路径链接动态库


无需再次链接,动态更换库


动态库的显示链接:

动态库流程


                                                




各方式对比:


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

静态库、动态库,dll文件、lib文件,隐式链接、显式链接浅见

静态链接、动态链接 静态库和动态库分别应用在静态链接方式和动态链接方式中,所谓静态链接方式是指在程序执行之前完成所有的链接工作,把静态库一起打包合入,生成一个可执行的目标文件(EXE文件...
  • dcrmg
  • dcrmg
  • 2016年12月01日 23:10
  • 671

Linux下静态、动态库(隐式、显式调用)的创建和使用及区别

Linux下静态、动态库(隐式、显式调用)的创建和使用及区别 一、静态链接库的创建与使用: 1、编写add.c 及main.c代码: /*******************************...

linux 动态库 显式调用 与 隐式调用

1、介绍 动态库是程序设计常用的技术,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理。在Windows和Linux操作系统中都有动态库的概念。Windows...

DLL动态库的创建,隐式加载和显式加载

动态库的创建 打开VS,创建如下控制台工程,工程命名为DllTest: 在弹出的对话框中选择“DLL”后单击“完成”按钮: 在工程中新建DllTest.h和DllTest.cpp...
  • dcrmg
  • dcrmg
  • 2016年12月02日 20:32
  • 1003

动态链接库DLL的加载:隐式加载(载入时加载)和显式加载(运行时加载)

静态链接库在链接时,编译器会将 .obj 文件和 .LIB 文件组织成一个 .exe 文件,程序运行时,将全部数据加载到内存。 如果程序体积较大,功能较为复杂,那么加载到内存中的时间就会比较长,...

linux下动态链接库(.so)的显式调用和隐式调用

进入主题前,先看看两点预备知识。 一、显式调用和隐式调用的区别         我们知道,动态库相比静态库的区别是:静态库是编译时就加载到可执行文件中的,而动态库是在程序运行时完成加载的,...

动态链接库的隐式连接与显式连接有什么不同

隐式链接是指在代码中使用了了库中的代码,只是在链接时,链接器会把该库的符号信息以及导入函数的信息写入到生成的Exe文件的特定的区段中。当该程序加载时,操作系统会根据这个区段中的信息,来查找每个它需要的...

linux下动态链接库(.so)的显式调用和隐式调用

进入主题前,先看看两点预备知识。 一、显示调用和隐式调用的区别         我们知道,动态库相比静态库的区别是:静态库是编译时就加载到可执行文件中的,而动态库是在程序运行时完成加载的,所以使用动态...

linux下动态链接库(.so)的显式调用和隐式调用

进入主题前,先看看两点预备知识。 一、显式调用和隐式调用的区别         我们知道,动态库相比静态库的区别是:静态库是编译时就加载到可执行文件中的,而动态库是在程序运行时完成加载的,...
  • yyf0986
  • yyf0986
  • 2017年06月23日 13:13
  • 117
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:编译 库链接实例(动态库 隐式显式)
举报原因:
原因补充:

(最多只允许输入30个字)