精华内容
下载资源
问答
  • 编译的时候,链接 数学, -lptread 链接线程等等,也可以使自己编译的 Question: 编译程序时得到undefined reference to 'xxxx'这样的错误提示  Answer: 那你一定是缺少某个,用 -l参数将加入。Linux的...

    到书上出现gcc -lm 的选项,甚是不解,在网上查阅了一些资料,访问了一些论坛整理下。
    初学linux和gcc,C代码调用math.h中的函数有问题,如sqrt函数。若如sqrt(3.0)则可以编译通过并运行正常,若如sqrt(n),这里n是定义好的double型变量,则不能编译通过,错误信息为:undefined reference to 'sqrt'。
    像 sqrt(3.0); 这种调用,gcc 在编译时就可以将其替换为对应的值(gcc 优化的一部分),从而不需要链接 sqrt 所在的数学库 libm;而像 sqrt(n); 这种调用,一般无法做这种替换,因此需要链接 libm。

    编译的时候,链接 数学库, -lptread 链接线程库等等,也可以使自己编译的库

    Question: 编译程序时得到undefined reference to 'xxxx'这样的错误提示 
    Answer: 那你一定是缺少某个库,用 -l参数将库加入。Linux的库命名是一致的,一般为libxxx.so,或libxxx.a,libxxx.la,那么你要链接某个库就用-lxxx,去掉头lib及"."后面的so,la,a等即可。 因为数学函数位于libm.so库文件中(通常在/lib目录下),-lm选项告诉编译器,我们程序中用到的数学函数要到这个库文件里找.
    同时,常见的库链接方法为: 
    数学库 -lm ; posix线程 -lpthread 
    lc 是link libc
    lm 是link libm
    lz 是link libz

     

    -ldl

     #include <dlfcn.h>

     dlopen(),dlclose() , dlerror() , dlsym() , the Base Definitions volume of IEEE Std 1003.1-2001, <dlfcn.h>

    这些函数,动态库的相关部分

    -dl ,是显式加载动态库的动态函数库

    展开全文
  • 动态链接库DLL是什么

    千次阅读 2019-07-23 18:24:18
    动态链接库(英语:Dynamic-link library,缩写为DLL)是微软公司在微软视窗操作系统中实现共享函数库概念的一种实现方式。这些库函数的扩展名是.DLL、.OCX(包含ActiveX控制的库)或者.DRV(旧式的系统驱动程序)。...

    动态链接库(英语:Dynamic-link library,缩写为DLL)是微软公司在微软视窗操作系统中实现共享函数库概念的一种实现方式。这些库函数的扩展名是.DLL、.OCX(包含ActiveX控制的库)或者.DRV(旧式的系统驱动程序)。

    所谓动态链接,就是把一些经常会共享的代码(静态链接的OBJ程序库)制作成DLL档,当可执行文件调用到DLL档内的函数时,Windows操作系统才会把DLL档加载存储器内,DLL档本身的结构就是可执行档,当程序有需求时函数才进行链接。透过动态链接方式,存储器浪费的情形将可大幅降低。静态链接库则是直接链接到可执行文件。


    • Reference

    1. Linux 中的动态链接库和静态链接库是干什么的?
    2. 动态链接库-维基百科
    展开全文
  • 动态链接库什么?怎么用?

    千次阅读 2017-12-19 18:13:20
    最近了解了一下关于动态链接库的知识。 动态链接库按照一系列的命令就可以生成。linux下的.so文件。 1,.so到底是什么? 我们编出动态链接库,只需要用到的头文件和.so就可以使用其中的函数,实际上头文件也是...

    最近了解了一下关于动态链接库的知识。

    动态链接库按照一系列的命令就可以生成。linux下的.so文件。

    1,.so到底是什么?

    我们编出动态链接库,只需要用到的头文件和.so就可以使用其中的函数,实际上头文件也是为了让用户看一看,实际连头文件都不用。

    简单来看,动态链接库就是.c,.cpp文件的集合,然后在调用的时候就需要一个接口头文件和头文件下的函数声明而已。这样我们就可以将动态链接库重复使用,不需要每次都定义重复的函数。

    2.简单的动态链接库怎么使用?

    这里我定义了test.c,test.h,main.c

    test.c:

    #include "test.h"

    int func()

    {

    printf("hello");

    return 0;
    }

     

    test.h

    #ifndef TESH_H

    #define TESH_H

    int func();

    #endif

     

    main.c

    #include "tesh.h"

    int main()

    {

    func();
    }

     

    好了,一个很简单的Hello ,

     

    1.      gcc –c –fpic test.c  --> test.o

    2.      gcc –shared –fpic –o libtest.so test.o   

    3.      gcc  main.c  –ltest

    4.      ldd查看路径,将新创建的.so导入not found的文件夹下就可以使用。

    在这里要注意什么?第三步,将生成的.so投入使用的时候要注意将接口头文件留下来。

    只需要头文件,和把.so放到-ltest可以找到的地方。

     

    三,恶心的是链接库中的函数使用到了其他链接库的东西,具有了依赖关系怎么处理?

    这里先学习了一些基础:

     

    gcc -o hello hello.c -I /home/hello/include -L /home/hello/lib -lworld

    上面这句表示在编译hello.c时:

    -I /home/hello/include表示将/home/hello/include目录作为第一个寻找头文件的目录,寻找的顺序是:/home/hello/include-->/usr/include-->/usr/local/include

    -L /home/hello/lib表示将/home/hello/lib目录作为第一个寻找库文件的目录,寻找的顺序是:/home/hello/lib-->/lib-->/usr/lib-->/usr/local/lib

     -lworld表示在上面的lib的路径中寻找libworld.so动态库文件(如果gcc编译选项中加入了“-static”表示寻找libworld.a静态库文件)

     

    在第一步时,要注意将有依赖关系的头文件以 -I 文件一,-I文件二的形式增加。才能生成.o

    在第二步生成.so时,要将依赖的库都放在后面。

    然后将生成的。so放到能够得到的目录下,ldd看看其他依赖库的位置放,这样就只需要接口头文件就可以编新程序调用这些接口了!

     

     

     

     

    展开全文
  • 无法定位程序输入点于动态链接库

    万次阅读 2018-06-19 15:22:12
    最近在项目研发调用动态链接库.dll文件时发现一个问题“无法定位程序输入点于动态链接库“ 网上百度未果,经调试发现调用新动态链接库.dll文件未将DEBUG文件夹下旧动态链接库.dll文件删除,删除旧动态链接库...

    最近在项目研发调用动态链接库.dll文件时发现一个问题“无法定位程序输入点于动态链接库“

     

     

    网上百度未果,经调试发现调用新动态链接库.dll文件未将DEBUG文件夹下旧动态链接库.dll文件删除,删除旧动态链接库后运行成功。

     

    展开全文
  • 我的问题不在于D盘的这个dll文件,主要C:\Windows\System32里面的tbb(tbbmalloc属于tbb)。网上也试过了命令行中使用regsvr32注册dll文件问题,C盘的dll试过一个是可以的,对于D盘中对应的这个结果是这样 这里...
  • C++ 动态链接库和静态链接库

    千次阅读 多人点赞 2019-09-23 15:59:58
    动态静态的区别静态链接库静态链接库的创建方法lib的调用动态链接库动态链接库的创建方法dll的使用隐式链接显式链接 源程序编译链接生成文件格式   首先贴出从源程序生成可执行文件的过程。 源程序(sour...
  • 作为初学者,对动态链接库的具体应用很模糊,这里作者利用qt和vs2013进行联合编程,C++实现算法生成动态链接库,qt用来做界面。 因为作者利用vs2013作为平台编写qt程序,因此C++调用动态链接库与本例程做法一致。...
  • CUDA v11.0可能会缺失的dll动态链接库们.事实上,还是建议同学们缺什么自己去搜着下载,我也已经把大部分解决方案写在文章里了,实在有下载不下来的,再来我这里面找找吧。
  • 动态链接库和静态链接库的区别

    千次阅读 2019-07-03 00:56:39
    静态连接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候... 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的...
  • VS如何调用动态链接库

    千次阅读 2018-12-23 20:40:23
    打开VS,建立常规工程,添加新建...“1”的意思是:因为.lib文件包含了Dll1.dll中导出函数的符号名,相当于告诉对话框程序相关函数应该去dll中调用。 “2”的意思是:对外部函数的声明。 运行结果如下图所示:
  • 静态链接库和动态链接库的区别

    千次阅读 2019-10-29 16:22:11
    1、链接库概述 2、静态链接库 2.1、编辑测试文件 2.2、将.c 编译生成 .o文件 2.3、由 .o 文件创建.a静态库 2.4、在程序中使用静态库 2.5、生成目标程序main,然后运行 3、动态库(隐式链接) 3.1、由 .o创建...
  • Linux下生成动态链接库

    千次阅读 2018-04-18 17:32:53
    【摘要】动态链接库是在编译器编译之后生成 obj 文件之后,将几个链接文件和动态链接库中的文件链接起来,在链接器中将几个目标文件组合在一起然后生成可执行文件 exe 文件,而生成动态链接库的这一步骤是由编译器...
  • 动态链接库之动态加载

    千次阅读 2019-01-21 14:22:51
    动态加载比静态加载难一些 这里是针对windows下的API来讨论动态加载   首先windows下的动态加载是靠三个函数来实现的 #include &lt;windows.h&gt; LoadLibrary(); GetProcAddress(); FreeLibrary();...
  • 动态链接库详解【一】

    千次阅读 多人点赞 2014-04-12 21:57:04
    一、分别编译与链接(Linking) 大多数高级语言都支持分别...在C/C++中,这些独立的编译单元包括obj文件(一般的源程序编译而成)、lib文件(静态链接的函数)、dll文件(动态链接的函数)等。 静态链接方式:在
  • C语言 之建立动态链接库

    千次阅读 2020-03-23 20:14:38
    下面我们建立一个动态链接库。 回顾上篇文章讲的建立静态链接库,我们把这几个文件丢到一个新的目录下: makefile tiaoshen.c mmc.h xu.c 你也可以自己建立新的文件,这里不再赘述。 makefile文件中改成 all: ...
  •  什么是动态链接库:英文缩写为DLL,它并不是可执行的文件,它是能向多个程序提供公用代码函数和数据的封装库,程序所需要的一些函数和数据被事先封装在DLL文件中,当程序运行时可以主程序需要调用这些DLL动态链接...
  • QT5.14.1生成动态链接库

    千次阅读 2020-03-27 14:00:47
    目录 一、创建项目 1、创建 Libaray 项目 2、项目名称 3、选择语言 4、选择编译器 5、选择版本控制器 二、编写...Qt5.14.1生成动态链接库的教程已经完成 接下来教大家如何用Qt5.14.1调动动态链接库(.dll和.h文件)
  • Linux下动态链接库的创建和使用

    千次阅读 2016-04-06 13:40:41
    Linux链接库的创建和使用 链接库 动态链接库的创建和使用 静态链接库的创建和使用
  • VSCode开发C、C++环境搭建系列(二)——GCC/G++编译器对头文件、静态动态库的搜索路径详解 一、从动态库的编译说起 下面通过一个例子来介绍如何生成一个动态库。 这里有一个头文件:so_test.h, 三个.c文件...
  • CUDA 动态链接库与静态链接库

    千次阅读 2016-10-03 09:37:34
    参考《CUDA C BEST PRACTICES GUIDE》 chapter 15 PREPARING FOR DEPLOYMENT,关于部署CUDA加速的程序时,往往对CUDA加速的程序编译为动态链接库或者静态链接库。这两者导致的区别是,使用动态链接库,在目标机器上...
  • 注:.dll文件是Windows平台下的动态链接库文件,在Linux平台,有响应功能的文件是.so文件,.so文件接口的封装也可以参考此文的思路 目录 一、DLL项目结构介绍 二、DLL项目示例 1.文件 My_Dll_Project.h 2.文件...
  • 关于vs2019设置动态链接库

    千次阅读 2020-01-23 14:25:27
    //ifdef的意思是如果IMPORT_DLL已经定义过了,则执行else前面的,如果未定义,则执行else后面的。 # else # define IMPORT_DLL extern "C" _declspec(dllexport) //指的是允许将其给外部调用 //这里 _...
  • (The procedure entry point ~ could not be located) 原因:找不到动态链接库动态链接库损坏。 解决方法: 这篇文章有详细的分析: ...
  •   启动自己编译生成的cloudcompare.exe的时候,报错说无法定位程序输入点,如下图所示: ...解决办法就是,检查一下环境变量里面的依赖dll路径,看是否混用了,或者看一下使用的dll版本是否正确。 ...
  • 这篇文章先说如何写一个导出模板类的动态链接库,再说问题。 要编写自己的动态链接库首先需要创建一个dll工程,我用的是win10+vs2015 创建dll工程后vs会自动给你生成几个文件。在Dll2.h和Dll2.cpp中写自己的类定义...
  • 《创建动态链接库(dll)》 中创建的MyDll0.dll ID Caption 命令响应函数 函数功能 IDC_BTN_ADD Add OnBnClickedBtnAdd 调用MyDll0.dll的add函数 IDC_BTN_SUBTRACT ...
  • 在MATLAB使用过程中可能由于版本不匹配等出现动态链接库连接错误,如“/home/Matlab/sys/os/glnxa64/libstdc++.so.6: version ‘GLIBCXX_3.4.26’ not found”GLIBCXX_3.4.36缺少支持,解决方案如下: 第一步: 首先...
  • 链接是把目标文件、操作系统的启动代码和用到的文件进行组织,形成最终生成可执行代码的过程。 二、编译过程 编译过程分为:预编译过程,编译过程,汇编过程。 2.1、预编译过程 读取.c或.cpp源程序,对其中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 68,454
精华内容 27,381
关键字:

动态链接库是什么意思