首页 > 其他分享 >8.6 DLL文件及导入库

8.6 DLL文件及导入库

时间:2023-02-13 21:22:42浏览次数:41  
标签:及导 文件 MessageBox 8.6 Windows 存储 DLL 入库

Windows以函数的形式为应用提供了各种功能。这些形式的函数称为API (应用程序接口)。例如,Samplel.c中调用的MessageBox0不是C语言的标准函数,而是Windows提供的API的一种。MessageBox()提供了显示消息框的功能。

Windows中,API的目标文件,并不是存储在通常的库文件中,而是存储在名为DLL文件的特殊库文件中。DLL文件是程序运行时动态结合的文件。

MessageBox()的目标文件是存储在import32.lib中的。import32.lib中仅仅存储着两个信息,①是MessageBox()在user32.dll这个DLL文件中,②是存储着DLL文件的文件夹信息,MessageBox()的目标文件的实体实际上并不存在。我们把类似于import32.lib这样的库文件称为导入库

存储着目标文件的实体,并直接和EXE文件结合的库文件形式称为静态链接库。存储着sprintf()的目标文件的cw32lib就是静态链接库。sprintf()提供了通过指定格式把数值转换成字符串的功能。

通过结合导入库文件,执行时从DLL文件中调出的MessageBox()函数这一信息就会和EXE文件进行结合。这样,链接器链接时就不会再出现错误消息,从而就可以顺利编写EXE文件。
下图总结了Windows中的编译及链接机制:

标签:及导,文件,MessageBox,8.6,Windows,存储,DLL,入库
From: https://www.cnblogs.com/ttmeng/p/17117841.html

相关文章

  • element-ui表格单元格合并后数据出现偏移问题及导出后合计行错位
    合并单元格想要实现的效果为了方便查看表格汇总数据,要求页面将合计数据加在列表第一行,前三个单元格合并,效果图如下:按官方文档实现在el-table标签内加上==:span-method=......
  • 控制bin文件夹里面的dll不复制到临时目录中
    web.config中<!--shadowCopyBinAssemblies可选的Boolean特性。设置一个布尔值,该值指示Bin目录中的应用程序的程序集是否影像复制到该应用程序的ASP.NET临......
  • 问题解决:由于找不到msvcr110.dll,无法继续执行代码
    报错解决下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=30679......
  • golang实现dll恶意劫持转发
    原文:https://xz.aliyun.com/t/10143本文章将讲解如何使用Golang来实现恶意的dll劫持转发dll转发概述dll转发:攻击者使用恶意dll替换原始dll,重命名原始dll并通......
  • Dll
    dllexport(导出)当Microsoft的C/C++编译器看到_declspec(dllexport)修饰符修饰的变量、函数原型或C++类的时候,会在生成的.obj文件中嵌入一些额外的信息。当链接器在链接......
  • 8.6DLL文件及导入库
    Windows以函数的形式为应用提供了各种功能。这些形式的函数称为API(应用程序接口)。例如,Samplel.c中调用的MessageBox0,它并不是C语言的标准函数,而是Windows提供的API的一......
  • playwright 运行报错ImportError: DLL load failed
    使用playwright编写了一个爬虫程序,放到远程的windowsserver服务器上面运行的时候出现下面错误File"<frozenimportlib._bootstrap>",line1206,in_gcd_importFil......
  • 缺少 vcruntime140_1.dll
    情景:安装mysql解压包提示缺少 vcruntime140_1.dll下载vcruntime140_1.dll,将下载过来的dll文件复制到C:\Windows\System32目录下(windows64位系统)  成功install后,启动m......
  • .net core build 工具无法引用COM DLL 则可以使用nuget包
    我使用命令行构建项目,提示无法引用COMDLL需要使用.NETfromwork版的构建工具其实可以通过nuget包来导入其他人创建的COMDLL包装程序集,这样就可以使用.NETcore的构......
  • Matlab编译生成DLL,供QT调用
    QT5.15.2MatlabR2022a一、使用matlab生成dll准备好matlab接口命令行窗口敲入以下命令:  弹出以下对话框 选择LibraryCompiler弹出以下对话框  选择C......