如何编写DLL文件

这篇具有很好参考价值的文章主要介绍了如何编写DLL文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如何编写DLL文件

阅读本文请首先学习C++以及C语言的使用,这是基础

什么是dll文件

DLL文件: 中文翻译为动态链接库,windows系统程序提供了很多的可以被调用的可执行文件,就像我们软件开发的时候,从来没有自己去写一个程序的图形化界面什么的,这是因为Windows系统都给我们提供了,我们只需要去调用就可以使用了。比如我们经常看到的kernel32.dll(包含管理内存,进程和线程相关的函数),User32.dll(大部分是用户接口函数)。

主要是如果步提供dll文件的话那么很多应用和开发者就得自己去编写底层的代码,这将会给软件开发者带来很大的困难。

如何创建dll文件

本人使用的VS进行构建,本人比较建议使用VS进行windows代码开发,毕竟是微软自己开发的编译器。

新建项目,选择新建dll项目

如何编写DLL文件

这样就算创建了一个dll文件,至于里面的是什么东西,我们也不用管,只需要知道我们的代码都是在dllmain.cpp里面编写就可以了,dll生成的方法也根普通的C++文件不一样,我们直接在DLL项目中右键,然后点击生成就可以了。

如何编写DLL文件

我们就可以发现生成了一个dll文件

dll文件代码简单介绍

我们VS自动帮我们生成了一些代码,简单介绍以下这些代码都是干啥用的

// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}

DllMain函数

静态链接或者动态链接(LoadLibrary调用等)都会调用DllMain这个函数,我们可以通过以下的四个情况来判断是何时使用这个dllmain函数

  1. DLL_PROCESS_ATTACH:这个是dllmain文件被映射到地址空间时才会被调用的,也就是只有第一次被调用时才会运行这一段
  2. DLL_PROCESS_DETACH:当DLL被从进程的地址空间解除映射时
  3. DLL_THREAD_ATTACH:这个是进程创建线程的时候
  4. DLL_THREAD_DETACH:这是线程结束时调用的

一个简单实例

我们计划用Dll文件下载一个html网页

这是我们在dllmain中的代码

// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"
#include<windows.h>
#include "stdio.h"


BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    printf("dll load\n");
}

我们可以生成得到一个dll文件,然后我们要想办法调用这个文件

#include "windows.h"
#include "stdio.h"

int main(int argc, char* argv[])
{
    HMODULE  g_hDll = LoadLibrary("D:\\Code\\source\\repos\\DLLStudy\\Debug\\DLLStudy.dll");
    return 0;
}

因为我把这个dll文件中的switch给删了,所以不管是哪种调用都会执行这个printf函数,所以我们会发现这个一共被调用了两次。

如何编写DLL文件

ok这就是dll调用的一个简单操作,希望可以帮到你

Hope this blog can help you!文章来源地址https://www.toymoban.com/news/detail-451523.html

到了这里,关于如何编写DLL文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • dll和lib 修改文件名后不能用,如何修改dll与lib文件名称?

    dll和lib 修改文件名后不能用,如何修改dll与lib文件名称?

    修改dll的名称,可以直接用 直接将原来XX.dll   XX.lib,修名称为YY.dll  YY.lib时,发现不能调用 这是因为YY.lib 里面都是指向XX.dll的东西, 需要lib以记事本的方式打开,将里面的所有XX全部替换为YY 同时.lib的名称长度必须和XX.lib的一样 ,不一样长时就会报错LNK1127 library is corr

    2024年02月15日
    浏览(23)
  • 缺失msvcrtd.dll怎么办?如何修复msvcrtd.dll文件

    缺失msvcrtd.dll怎么办?如何修复msvcrtd.dll文件

    在日常使用电脑中,其实出现一些dll文件缺失是非常的正常的,这时候我们不需要慌张,只需要知道一些解决方法,那么就可以解决文件缺失问题,今天来给大家详细的讲解一下缺失msvcrtd.dll怎么办。 一.什么是msvcrtd.dll文件 msvcrtd.dll是一个重要的系统文件,它是Microsoft Visua

    2024年02月07日
    浏览(46)
  • vcruntime140.dll丢失的解决方法?教你如何修复好dll文件

    vcruntime140.dll丢失的解决方法?教你如何修复好dll文件

    Vcruntime140.dll文件是Windows操作系统中非常重要的一个动态链接库文件,用于支持使用Microsoft Visual C++编译器创建的应用程序的运行。当Windows系统中的vcruntime140.dll文件丢失时,可能会导致某些应用程序无法正常启动。在尝试启动应用程序时,可能会看到一个错误消息,提示用户

    2024年02月06日
    浏览(43)
  • Linux系列文章 —— vim的基本操作(误入vim退出请先按「ESC」再按:q不保存退出,相关操作请阅读本文)

    Linux系列文章 —— vim的基本操作(误入vim退出请先按「ESC」再按:q不保存退出,相关操作请阅读本文)

    vim-操作篇 进程概念篇 进程地址空间篇 Linux,是一种免费使用和自由传播的类UNIX操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用

    2024年02月03日
    浏览(14)
  • Win7缺失dll文件如何修复?Win7计算机丢失dll文件怎么办

    Win7缺失dll文件如何修复?Win7计算机丢失dll文件怎么办

    电脑已经成为人们生活中必不可少的工具之一,但是在使用过程中难免会遇到一些问题,比如在打开某些程序或软件的时候,Win7系统会提示缺少某dll文件,这该怎么办?下面我就给大家讲讲如何来解决dll文件缺失的问题。 解决方法一: 比较直的做法是,缺少什么dll文件,就

    2024年02月05日
    浏览(49)
  • msvcp140_1.dll文件丢失如何解决?

    msvcp140_1.dll文件丢失如何解决?

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或者损坏了,这时你只需下载这个msvcp140_1.dll文件进行安装(前提是找到适合的版本),当我们执行

    2024年02月09日
    浏览(12)
  • 如何修复dxgi.dll文件错误?修复方法推荐

    如何修复dxgi.dll文件错误?修复方法推荐

    如果您使用Windows操作系统,在使用某些应用程序时,可能会遇到dxgi.dll文件错误。这可能会导致应用程序崩溃或无法正常运行。在本文中,我们将探讨如何修复dxgi.dll文件错误。   一.什么是dxgi.dll文件 dxgi.dll文件是Microsoft DirectX图形接口的一部分,用于处理计算机上的图形和

    2024年02月06日
    浏览(11)
  • 无法找到mfc100.dll的解决方法分享,如何快速修复mfc100.dll文件

    无法找到mfc100.dll的解决方法分享,如何快速修复mfc100.dll文件

    在日常使用电脑时,我们可能会碰到一些系统错误提示,比如“无法找到mfc100.dll”的信息。这种错误通常会阻碍代码的执行或某些应用程序的启动。为了帮助您解决这一问题,本文将深入探讨其成因,并提供几种不同的mfc100.dll解决方案。让我们现在就来详细了解如何修复导

    2024年01月21日
    浏览(12)
  • 电脑系统提示找不到dbghelp.dll文件如何解决?

    电脑系统提示找不到dbghelp.dll文件如何解决?

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个dbghelp.dll文件(挑选合适

    2024年02月15日
    浏览(88)
  • Go语言中,如何调用C++的dll文件

    我将给出一个完整的示例来说明如何调用C++ DLL文件。首先,我们将创建一个简单的C++ DLL,然后编写Go代码来调用该DLL。 创建C++ DLL文件( example.cpp ): 编译C++代码为DLL文件: 使用MinGW编译器编译 example.cpp 文件,生成 example.dll 文件。 -Wl,–out-implib,libexample.a -Wl,–output-def,exa

    2024年03月12日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包