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

原创 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 指定静态库路径


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


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


动态库的显示链接:

动态库流程


                                                




各方式对比:


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

动态库的显示链接和隐式链接

 我们通常把一些公用函数制作成函数库,供其它程序使用。 函数库分为静态库和动态库两种。   (1)静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。   (...
  • zhanghuaichao
  • zhanghuaichao
  • 2016年10月11日 17:24
  • 1256

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

Linux下静态、动态库(隐式、显式调用)的创建和使用及区别 一、静态链接库的创建与使用: 1、编写add.c 及main.c代码: /*******************************...
  • start000722
  • start000722
  • 2013年12月13日 13:58
  • 6738

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

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

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

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

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

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

请问dll中的隐式链接和显式链接的区别?谢谢,初学VC,多多帮助,在线等

1、静态调用方式:由编译系统完成对DLL的加载和应用程序结束时DLL卸载的编码(如还有其它程序使用该DLL,则Windows对DLL的应用记录减1,直到所有相关程序都结束对该DLL的使用时才释放它),...
  • u010154760
  • u010154760
  • 2015年05月13日 12:14
  • 908

DLL系列---Dll的隐式链接和显示链接

首先我们需要明确几个概念,
  • ebxds
  • ebxds
  • 2014年11月09日 16:07
  • 1679

Qt程序中动态库的隐式调用

这几天在写程序中时候,用到了一个第三方库。我下载完他的源码编译后,不怎么怎么使用, 后来在网上找了找了一些资料查看了一些文档。终于解决了问题! 动态库和静态库的介绍在在前的博客:http://bl...
  • Andy_93
  • Andy_93
  • 2016年10月20日 14:43
  • 968

【SQL入门】内连接:显式连接、隐式连接 外连接:左外连接、右外连接

一、SQL是什么 Structured Query Language结构化查询语言 二、SQL练习 约定: mysql>> (mysql>>后面所跟的命令是在进入mysql后输入的) shell>...
  • wanwan_javaweb
  • wanwan_javaweb
  • 2014年05月07日 20:07
  • 2522

动态链接库基础-隐式链接与显式链接

静态链接库(*.lib) 如果在程序中使用静态链接库,那么编译器在链接的过程中会将*.obj文件和*.lib文件组织成可执行exe文件,也就是将.lib中的代码链接到可执行文件中,因此生成的exe文...
  • Hilavergil
  • Hilavergil
  • 2017年11月15日 20:53
  • 106
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:编译 库链接实例(动态库 隐式显式)
举报原因:
原因补充:

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