精华内容
下载资源
问答
  • 更多相关内容
  • 下面我们将用两种不同的姿势来用VS2017生成dll文件(动态库文件)和lib文件(静态库文件),这里以C语言为例,用最简单的例子,来让读者了解如何生成dll文件(动态库文件) 生成动态库文件 姿势一: 第一步:新建...

    下面我们将用两种不同的姿势来用VS2017生成dll文件(动态库文件)和lib文件(静态库文件),这里以C语言为例,用最简单的例子,来让读者了解如何生成dll文件(动态库文件)

    生成动态库文件

    姿势一:

    第一步:新建一个项目

    第二步:选择Windows桌面向导(这里先不要去管上面的“动态链接库(DLL)”)

     第三步:选择动态链接库,并空项目打勾√

     第四步:添加一个.c源文件

    第五步:(因为这里以C语言为例子,将后缀改为.c)

    第六步:在c文件中输入一个简单的函数这里使用了_declspec(dllexport),但_declspec(dllexport)并不是必须的,后面一种方法将不使用_declspec(dllexport)

    _declspec(dllexport) int sum(int a, int b)
    {
        return a + b;
    }

     

     

    第七步:新建一个头文件

     第八步:在头文件中输入函数的声明

    第九步:编译

    第十步:Debug文件夹下的两个文件DLL.dll和DLL.lib就是我们要使用的两个文件了

    因为使用的_declspec(dllexport),虽然这里我们只编译了一次,却生成了dll和lib两个文件

    姿势二

    第一步到第五步和上面的步骤一模一样,这里从第六步开始讲起

    第六步:在c文件中输入一个简单的函数(注意这里就没有使用_declspec(dllexport))

    第七步:添加一个头文件

    第八步:在头文件中输入函数的声明

    第九步:编译

    第十步:这时在Debug文件里就可以看出两种方法的区别了,第二种方法没有加 _declspec(dllexport) 只有一个dll文件,如果我们也想要lib文件,需要额外几个步骤

    生成lib文件

    第十一步:点击项目——》DLL属性

    第十二步:配置属性——》项目默认值——》配置类型,把动态库(.dll) 改为 静态库(.lib)

    第十三步:编译

    第十四步:这个时候Debug文件夹里面就多出了一个lib文件

    从上面两个例子可以看出:

    在生成dll文件(动态库文件)时,如果不使用_declspec(dllexport)那么就只有dll文件,在这种情况下就无法使用#pragma comment来隐式装载动态库(因为需要lib文件),只能使用LoadLibrary来显式装载动态库(使用Loadlibrary只需要dll文件

    如果使用了_declspec(dllexport)那么就既有dll文件,也有lib文件

    还有一点需要注意的是,如果在源文件(.c文件)中函数的定义没有_declspec(dllexport)

    ,但是在头文件中函数的声明使用了_declspec(dllexport)此时编译产生的文件只有dll文件,如果改成源文件中有_declspec(dllexport),头文件中没有_declspec(dllexport),那么编译产生的文件既有dll文件也有lib文件

    (导出dll文件时最好还是在源文件和头文件中都加上_declspec(dllexport)

    笔者记录了一下加与不加_declspec(dllexport)对导出dll文件大小的影响,以上面的代码为例

    (造成dll文件大小不同的原因,笔者暂时无法给出解释,待补充)

    生成静态库文件

    和生成dll文件步骤相似,这里就不再赘述了,直接上图

    第一步:

    第二步:建议把预编译标头的勾去掉,(不去掉也没事,只是本文为了简洁,让读者更清楚的生成步骤)

    第三步:

    第四步:

    第五步:

    在源文件中输入以下代码:

    int sum(int a, int b)
    {
        return a + b;
    }

    第六步:

    第七步:

    第八步:

    第九步:编译,可以看到Debug文件夹下有一个lib文件

     笔者记录了一下加与不加_declspec(dllexport)对导出lib文件大小的影响,以上面的代码为例

    (至于为什么加了_declspec(dllexport)后,lib文件会出现0.02KB的差别)

    有的读者可能会发现在网上很多博客写关于生成dll文件时,头文件里面的写法是这样的

    刚接触预处理命令的读者看着可能会有点不好理解,下面对上面的头文件中的代码逐个分析,笔者将上面的代码分为两个个部分(对预处理命令不是很熟悉的读者可以先看一下这一篇随笔:

    第一部分:

    #pragma once
    #ifdef DLL_EXPORTS
    #define DLL _declspec(dllexport)
    
    #else
    #define DLL _declspec(dllimport)
    
    #endif

    把上面的代码翻译一下就是:如果DLL_EXPORTS这个宏名已经被定义,那么DLL就等价于_declpsec(dllexport),否者DLL就等价于_declspec(dllimport),  #pragma once保证了该头文件只被包括(#include)一次,

    在很多头文件中都可以看到#pragma once,比如stdio.h

    读者这个时候可能就有疑问了,明明我没有#define DLL_EXPORTS,为什么是执行#define DLL _declspec(dllexport)而不是#define DLL _declspec(dllimport)呢?

    首先读者需要知道的是DLL_EXPORTS是一个预定义的宏,因为我们是生成的是DLL文件

    可以在属性->配置属性->C/C++->预处理器中看到

    现在读者应该清楚了,在生成DLL文件时,编译器已经预定义了DLL_EXPORTS这个宏名,如果我们是生成的应用程序

    上面的代码写成

    #ifdef
    ```
    #else
    ```
    #endif

    这种形式是为了方便在使用的时候lib或者dl文件时,需要引入头文件的时候方便一点,不需要对头文件做任何的修改(因为如果我们使用的配置类型是“应用程序(.exe)”,那么就没有预定义DLL_EXPORTS)

    第二部分:

    #ifdef _cplusplus
    extern "C"
    {
    #endif
        DLL int sum(int a, int b);
    #ifdef _cplusplus
    }
    #endif

    把上面的代码翻译一下就是:如果是C++文件(.cpp后缀)那么就是

    extern "C"
    {
        DLL int sum(int a, int b);
    }

    如果不是C++文件,那么就是

    DLL int sum(int a, int b);

    关于extern "C"作用,可以看一下这篇文章:

    总结一下:

    生成动态库文件

    头文件:

     1 #pragma once
     2 #ifdef DLL_EXPORTS
     3 #define DLL _declspec(dllexport)
     4 
     5 #else
     6 #define DLL _declspec(dllimport)
     7 
     8 #endif
     9 
    10 #ifdef _cplusplus
    11 extern "C"
    12 {
    13 #endif
    14     DLL int sum(int a, int b);
    15 #ifdef _cplusplus
    16 }
    17 #endif

    源文件:

    1 _declspec(dllexport) int sum(int a, int b)
    2 {
    3     return a + b;
    4 }

    编译之后产生:

    生成静态库文件:

    头文件:

     1 #pragma once
     2 
     3 #ifdef _cplusplus
     4 extern "C"
     5 {
     6 #endif
     7     int sum(int a, int b);
     8 #ifdef _cplusplus
     9 }
    10 #endif

    源文件:

    1 int sum(int a, int b)
    2 {
    3     return a + b;
    4 }

    编译后产生:

    到这里本文就基本结束了,上面详细叙述了生成dll文件(动态库文件)和lib文件(静态库文件)的步骤。

    展开全文
  • 在win10系统中,有着大量的dll文件,...接下来就来告诉大家win10系统dll文件安装操作步骤。具体方法:1、windows自带了注册DLL文件的程序(可以直接按WIN+R键,通过“运行”对话框执行,WIN键所在位置如下图所示。2、...

    在win10系统中,有着大量的dll文件,这是一种计算机上的一类文件,而且一个DLL文件也可能被不同的应用程序使用,但是许多用户可能都不知道win10注册dll文件的操作,那么win10如何注册dll文件呢?接下来就来告诉大家win10系统dll文件安装操作步骤。

    具体方法:

    1、windows自带了注册DLL文件的程序(可以直接按WIN+R键,通过“运行”对话框执行,WIN键所在位置如下图所示。

    f3ac3261c72e3a63474a77d165c789bd.png

    2、打开“运行”后输入下图所示的命令。

    c69c77b4b08d7d55587f484f03a152d1.png

    3、执行后可以看到相关的帮助命令参数。

    8940167175ed5e825bd6efca2dc2c85a.png

    系统DLL文件注册

    1、要正确的注册系统DLL文件,首先要保证dll文件与当前系统平台的兼容性。如果所使用的dll文件不适合当前操作系统版本,则会提示类似下图的不兼容性提示。

    c1fa645492283e72b577e03ed57923a1.png

    2、其次,注册时指明dll的绝对路径,否则会有如下图所示的错误提示。

    6ffea0051816f40bf7568490eafa5d8b.png

    3、一般windows相关的系统dll文件,直接进行注册即可。

    10f0c6d01f91ece9c615690b0fa9deb6.png

    4、点击“确定”按钮或者按回车键即可注册成功。

    383a95fca0a4e11ea3373eaada66f350.png

    第三方DLL文件注册

    1、第三方DLL文件注册需要拥有管理员权限,否则就会注册失败

    6a6986bbf16b92affe0df84607604bfc.png

    2、为了以管理员权限执行注册命令,可以参考下面两种方法,方法一,先找到cmd命令提示符,右键选择“以管理员身份运行”。

    07507b5ab73de20741a51a8639131859.png

    3、接下来在命令提示符中执行注册命令即可。

    ce7bf66fbc8d8f063c2476ab649d074e.png

    4、另一种方法与上面的方法类似,只是将命令写成一个bat批处理文件。注意保存文件类型为“所有类型”。

    783353ec710ea283c367a6c4915aed4b.png

    5、接下来在bat批处理文件上右键选择“以管理员身份运行”。

    97b5382d0e16379ace809125d89ddfe8.png

    6、依然可以运行,原理与在命令提示符中直接运行是一样的,但是第二种方法可以方便其它人操作。

    8eea740914057f7b7666953679808fc3.png

    上述就是win10系统dll文件安装操作步骤了,有需要的用户就可以根据小编的步骤进行操作了,希望能够对大家有所帮助。

    我要分享到:

    展开全文
  • sigar的jar包及dll文件

    热门讨论 2014-02-28 16:08:53
    sigar所需所有的jar包及dll文件 windows、linux
  • 注册dll文件【搞定步骤】

    万次阅读 2021-07-31 06:26:20
    喜欢使用电脑的小伙伴们一般都会遇到win7系统注册dll文件的问题,突然遇到win7...2:在运行窗口中输入命令regsvr32然后加一个空格,再输入dll文件的全路径,如在f盘路径就为F: lsxbe.dll,整个命令为regsvr32 F: ...

    喜欢使用电脑的小伙伴们一般都会遇到win7系统注册dll文件的问题,突然遇到win7系统注册dll文件的问题就不知道该怎么办了,其实win7系统注册dll文件的解决方法非常简单,按照

    1:在电脑桌面上,依次选中菜单项开始--运行,打开运行窗口。

    2:在运行窗口中输入命令regsvr32然后加一个空格,再输入dll文件的全路径,如在f盘路径就为F: lsxbe.dll,整个命令为regsvr32 F: lsxbe.dll,输入完成后回车。

    来操作就行了,接下来小伙伴们就好好的看下win7系统注册dll文件的处理步骤:

    1:在电脑桌面上,依次选中菜单项开始--运行,打开运行窗口。

    0U02T006-0.jpg

    2:在运行窗口中输入命令regsvr32然后加一个空格,再输入dll文件的全路径,如在f盘路径就为F: lsxbe.dll,整个命令为regsvr32 F: lsxbe.dll,输入完成后回车。

    0U02W452-1.jpg

    3:有些dll文件可以注册成功,而有些文件就不能注册成功,会有错误提示,示例的nlsxbe.dll文件是一个程序的应用文件。

    0U02Q346-2.jpg

    4:检查一遍,确定regsvr32命令后面的路径下确实有该dll文件,而又注册不功能,将这个dll文件拷贝到系统盘C:WindowsSystem32目录下。

    0U02V252-3.jpg

    5:然后在运行窗口中输入命令regsvr32 nlsxbe.dll,然后回车,看是否注册成功。这个示例dll文件注册不成功。

    0U02W924-4.jpg

    6:注册不成功可能是这个dll文件不能单独拷贝出来注册,而是要使用该dll文件所在的软件安装路径进行注册。找到这个文件所在软件安装目录下的文件路径。

    0U02U912-5.jpg

    7:在运行窗口中输入命令regsvr32+dll文件全路径(所安装软件目录下的路径),然后回车。

    0U02V222-6.jpg

    8:这时这个dll文件就可以注册成功了。

    0U02R2R-7.jpg

    展开全文
  • acadres.dll文件丢失怎么办?acadres.dll是一个windows系统中必备的dll文件,该类型文件的全称为Dynamic Link Library,意思就是动态链接库,不过各位小伙伴不必在意,我们只需要知道它是一个电脑中非常重要的文件...
  • C++如何生成dll文件&C#如何调用dll文件
  • C# 调用 dll 文件

    千次阅读 多人点赞 2019-05-29 15:38:31
    一、先使用C++来创建一个 .dll 文件 1、创建新项目:CreateDll01 2、选择 “动态链接库(.dll)” 文件 3、在CreateDll01.cpp 源文件中添加如下代码 // CreateDll01.cpp : 定义 DLL 应用程序的导出函数。 /...
  • windows10安装dll文件

    千次阅读 2022-01-31 14:03:31
      大家在玩游戏的时候,经常会出现缺少dll文件,或文件损坏的提示,接下来我介绍一下如何修复此类问题: 1、安装dll文件到系统目录   32位版本的dll程序可以安装在win10系统C:\Windows\syswow64(你没看错,就是...
  • DLL文件脱壳

    千次阅读 2020-05-19 23:15:46
    DLL文件进行脱壳的原理和对普通PE文件进行脱壳的原理其实是差不多的,就是多了一个构造重定位表的步骤。因为DLL文件都是映射到其他进程的地址空间中,所以基址很有可能不是默认基址。而壳又会破坏原来的重定位表,...
  • 电脑缺少dll文件怎么办

    千次阅读 2021-07-25 03:20:10
    电脑缺少dll文件怎么办电脑系统缺少dll文件是经常的事,有时不影响使用,但会出来一个烦人的提示音-“当”。有的文件会影响系统的使用,电脑开不了机了开机后会黑屏直接提示缺少xxx.dll文件无法开机或文件损坏。那么...
  • c++生成DLL文件(visual studio 2019)面向小白萌新

    千次阅读 多人点赞 2021-04-08 16:43:54
    如何生成DLL文件,面向萌新小白。个人写完之后,觉得相当保姆级了。有不懂的地方欢迎留言。
  • 电脑开机提示dll文件丢失怎么办?

    千次阅读 2021-07-25 03:18:35
    【www.xinr41319.cn--电脑网络】很多同学都遇到过开机提示dll文件丢失...一、为什么会出现dll文件丢失或未找到等情况1、dll文件被覆盖我们经常会在电脑上安装一些软件。有时我们在安装软件的时候,软件的某些无效的...
  • C# 调用dll文件

    万次阅读 2019-02-28 18:13:55
    动态链接库(也称为DLL,即为“Dynamic Link Library”的缩写)是Microsoft Windows最重要的组成要素之一,打开Windows系统文件夹,你会发现文件夹中有很多DLL文件,Windows就是将一些主要的系统功能以DLL模块的形式...
  • Java调用dll文件

    千次阅读 2021-11-09 23:12:54
    1. C++创建dll 1.1 项目与工具 Visual Studio 2019 1.2 步骤与代码 ①使用VS创建动态链接库(DLL)项目 ②设置项目名与项目地址 创建好的效果如下: ③创建choosefiles.cpp源文件和choosefiles.h...
  • 使用python调用DLL文件

    千次阅读 2021-09-17 20:55:15
    使用python调用DLL文件环境调用方法生成dll文件在python中加载 最近要用python调用dll,在网上找了很多帖子,通常都说能用,但是自己去试的时候却千难万难,思索思索决定自己也写一下;希望能给各位以帮助。 环境 ...
  • 在计算机的操作过程中,难免出现丢失dll文件的现象,我们卸载软件时,就有可能误删了共享的dll文件。如果出现了dll文件丢失的情况,应该如何解决呢?工具/原料硬件:计算机方法/步骤xxxxxx.dll文件丢失的解决方法第...
  • 总会时不时的在论坛看到有人发贴问这些问题(加载c:****出错,找不到指定文件),我利用搜索功能看了一上,所有的回答基本上都差不多,所以我整理了一下,大致归纳为下面这些,希望有这种问题的朋友在发贴前先看看此贴...
  • 很多用户玩游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑的该dll文件没有或者损坏了,这时你只需下载这个base.dll文件进行安装,它...
  • 原标题:电脑弹窗提示dll文件丢失怎么办?看我如何快速解决吧!在日常生活工作使用电脑过程中,如果出现电脑丢失了某个dll文件,则可能导致电脑上的某些软件和游戏等程序无法正常启动和运行,甚至导致电脑系统不断...
  • 接下来, PConline 小编就为大家详细介绍电脑中查看并打开dll文件类型的具体方法。具体如下:1、首先我们鼠标双击一个dll文件。然后会出现如下界面。发现我们的电脑并无法直接打开这个文件。2、这个时候就需要我们...
  • python引用DLL文件的方法

    千次阅读 2020-12-05 00:35:08
    本文实例讲述了python引用DLL文件的方法。分享给大家供大家参考。具体分析如下:在python中调用dll文件中的接口比较简单,如我们有一个test.dll文件,内部定义如下:extern "C"{int __stdcall test( void* p, int ...
  • Win11如何替换dll文件?Win11替换dll文件的方法 Win11替换dll文件的方法 1、一般来说,win11需要的dll文件是要从win10镜像文件中提取的,不过本站贴心地为大家提取出来了。 2、只需要点击右侧的链接就可以下载到win...
  • 查看dll文件的两种办法

    万次阅读 2021-09-16 19:12:38
    VS查看dll文件的源代码方法 前言 嗯~ o( ̄▽ ̄)o 那个啥乡亲们 兄弟们 我回来了 你们有没有想过看dll 然后发现dll 不能看见方法体内部怎么实现。。 就很难受,你都给我用了还不让我瞧瞧 真小气O(∩_∩)O 然后呢 我就...
  • C# 引用不同文件夹下的Dll文件

    热门讨论 2012-03-08 11:12:34
    当我们的程序需要引用多个dll,太多的dll引起混乱时,我们是不是可以将dll分类在不同的目录呢?如何引用不同文件夹的Dll文件,将是我们的问题?
  • common.dll文件丢失怎么办?找不到common.dll文件如何修复?common.dll是电脑内十分重要的文件,它的丢失易导致游戏、应用软件等程序运行出现错误,致使程序无法正常运行,它的解决办法也是非常简单的,只要下载好...
  • dll文件一般指的是库文件,在Windows系统中,许多应用程序并不是一个完整的可执行的文件,它们被分割成一些相对独立的动态链接库,也就是dll文件,它们被放置在系统中,当我们执行某一个程序的时候,相应的dll文件就...
  • 如果遇到amtlib.dll文件找不到这种情况,该怎么办呢?下面小编就为大家带来了amtlib.dll文件找不到的解决办法,有需要的朋友可以来看看,希望可以帮助到大家哦。一、可以将在华军软件园下载来的amtlib.dll拷贝到指定...
  • 有的朋友遇到Windows10系统的电脑一开机就显示mfc110u.dll或d3dx9_39.dll等.dll文件丢失,导致电脑不能正常运行。那么要如何修复Windows10系统丢失dll文件的问题呢?1、如果丢失的是mfc110u.dll文件,百度搜索输入...
  • 两种方法删除顽固的DLL文件

    千次阅读 2021-04-14 15:32:30
    DLL文件是Windows系统中一种比较特殊的二进制文件,不少病毒、木马的生成的DLL文件可以具有无进程、不可删除、启动方式多样、隐蔽性高等特点。很多时候我们是通过杀毒软件的提示知道某个DLL文件感染了病毒,但不论是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 594,202
精华内容 237,680
关键字:

dll文件