dll文件

DLL文件作用

会有一股神秘感。 提交于 2020-02-19 17:41:30
DLL文件即动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源。Windows提供的DLL文件中包含了允许基于Windows的程序在Windows环境下操作的许多函数和资源。 DLL多数情况下是带有DLL扩展名的文件,但也可能是EXE或其他扩展名。它们向运行于Windows操作系统下的程序提供代码、数据或函数。程序可根据DLL文件中的指令打开、启用、查询、禁用和关闭驱动程序。 DLL可在“C:Windows”目录“C:WindowsSystem”目录和程序的安装目录中找到。如果启动程序,但一个或多个DLL文件丢失或毁坏,则会收到出错消息,如“找不到xyz.dll”。如果启动的程序带有一个过期的DLL文件或不匹配的DLL文件,则会出现“未定义的动态链接调用”消息。这时,你可在其他电脑上找到正确的DLL文件并将它拷贝到适当的目录下,程序就能正确运行。 比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序EXE文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费;另一个缺点是,在编写大的EXE程序时

转一篇Delphi下写DLL的文章

爱⌒轻易说出口 提交于 2020-02-19 17:41:15
Delphi制作DLL 一 Dll的制作一般步骤 二 参数传递 三 DLL的初始化和退出清理[如果需要初始化和退出清理] 四 全局变量的使用 五 调用静态载入 六 调用动态载入 七 在DLL建立一个TForM 八 在DLL中建立一个TMDIChildForM 九 示例: 十 Delphi制作的Dll与其他语言的混合编程中常遇问题: 十一 相关资料 一 Dll的制作一般分为以下几步: 1 在一个DLL工程里写一个过程或函数 2 写一个Exports关键字,在其下写过程的名称。不用写参数和调用后缀。 二 参数传递 1 参数类型最好与window C++的参数类型一致。不要用DELPHI的数据类型。 2 最好有返回值[即使是一个过程],来报出调用成功或失败,或状态。成功或失败的返回值最好为1[成功]或0[失败].一句话,与windows c++兼容。 3 用stdcall声明后缀。 4 最好大小写敏感。 5 无须用far调用后缀,那只是为了与windows 16位程序兼容。 三 DLL的初始化和退出清理[如果需要初始化和退出清理] 1 DLLProc[SysUtils单元的一个Pointer]是DLL的入口。在此你可用你的函数替换了它的入口。但你的函数必须符合以下要求[其实就是一个回调函数]。如下: procedure DllEnterPoint(dwReason: DWORD);far

Delphi动态调用C++写的DLL

情到浓时终转凉″ 提交于 2020-02-19 17:36:37
c++ DLL 文件,建议用最简单的c++编辑工具。不会加入很多无关的DLL文件。本人用codeblocks+mingw。不像 VS2010,DLL编译成功,调用的时候会提示缺其他DLL。 系统生成的main.h和main.cpp #ifndef __MAIN_H__ #define __MAIN_H__ #include <windows.h> /* To use this exported function of dll, include this header * in your project. */ #ifdef BUILD_DLL #define DLL_EXPORT __declspec(dllexport) #else #define DLL_EXPORT __declspec(dllimport) #endif #ifdef __cplusplus extern "C" { #endif int DLL_EXPORT Add(int plus1, int plus2); //导出函数Add #ifdef __cplusplus } #endif #endif // __MAIN_H__ #include "main.h" // a sample exported function int DLL_EXPORT Add(int plus1, int plus2) /

wxWidgets的安装编译、相关配置、问题分析处理

匆匆过客 提交于 2020-02-19 01:54:44
一、介绍部分 (win7 下的 GUI 效果图见 本篇文章的最后部分截图2张) wxWidgets是一个开源的跨平台的C++构架库(framework),它可以提供GUI( 图形用户界面 )和其它工具。目前的2.x版本支持所有版本的Windows、带GTK+或Motif的Unix和MacOS。相当于大家熟悉的 VC++。 参考介绍: http://www.cnblogs.com/nokiaguy/archive/2009/01/27/1381071.html http://www.baidu.com/s?wd=wxWidgets http://zh.wikipedia.org/zh/WxWidgets 二、wxWidgets的安装与编译: 二.1 基础部分 编译是少不了的操作,即使你下载的是安装包,因为这个安装包只是相当于自解压包,我们还需要将其进行编译,才能得到wxWidgets在Windows可用的库。 如果你在参考了许多编译文档或教程之后发现还是没有编译出某些库文件,如 wxbase28u_gcc_custom.dll libwxmsw28ud_gl libwxmsw28u_gl libwxmsw28u_dbgrid libwxmsw28ud_dbgrid wxbase28ud_gcc_custom.dll wxbase28u_gcc_custom.dll

vs2015+opencv+qt打包exe的问题

醉酒当歌 提交于 2020-02-18 07:26:44
1、程序在vs2010下能运行,独立运行生成的exe文件时会崩溃 原来问题出在调用文件的路径上,如果在程序中有涉及到打开文件等操作,把那个.exe程序复制到跟.cpp文件同一个目录下就行。 2、vs添加对dll的引用 通过设置vs工程的环境变量,实现对单个工程本地化配置的目标,环境变量可随整个工程迁移,设置方法:vs工程属性-->配置属性-->调试-->环境,例如,我们要引用../../bin/目录里面的dll,那么我们可以设置为:path=%path%;..\..\bin,如图: 3、关于qt打包问题 https://blog.csdn.net/u013165921/article/details/79404645 4、查看那些dll有用 使用工具depends工具 https://blog.csdn.net/ZYX19950825/article/details/70209177 5、总结: 将程序第二步运用的dll,和第4步进行对比,保留放入新的文件夹下(包括qt的dll和opencv的dll),将release下的exe也放进去,注意第一有没有需要调用的文档也放进去,程序运行就不会有问题。 说明opencv bin下可以有很多dll也可以只有一个opencv_world340.dll(release下)。 来源: https://www.cnblogs.com/rjjhyj

华为eNSP无法正常启动(0xc000007b)问题的解决

人盡茶涼 提交于 2020-02-14 21:19:32
最近在安装华为eNSP时,发现安装之后打不开 部分应用0xc000007b问题的主要原因:DirectX 9.0损坏或程序执行所需要的dll文件出现了问题 于是对DirectX进行了了修复以及检查dll文件,发现重新安装eNSP还是一样的问题 对此,我分享另外一种解决方案: 在安装eNSP之前先安装WinPcap 可以到 太平洋网 下载安装 然后重新安装eNSP,问题就解决了 来源: CSDN 作者: wduadua 链接: https://blog.csdn.net/wduadua/article/details/104307926

遇到一个奇葩的问题,could not load the assembly file XXX downloaded from the Web

∥☆過路亽.° 提交于 2020-02-14 19:16:45
在我这编译好好滴,发给客户那边居然不通过,报could not load the assembly file:///xxx.dll, 查阅了一些文档后,发现原来是文件的安全问题,是由于我把文件压缩打包后, 放在网盘上,让对方下载,对方下载后,VS就认为是从网上下载的文件,不安全, 解决方案:关闭VS,在有问题的DLL上点击右键,UNBLOCK该文件, 再次打开VS,编译就OK啦,还有个小技巧:如果你是打包的文件, 那么解压后所有的DLL,都要UNBLOCK,OH NO,这是要死人的节奏啊, but,你可以在压缩包上点右键,UNBLOCK一下,那么解压后的工程就不会有问题啦, 具体可参看: https://msdn.microsoft.com/en-us/library/ee890038(VS.100).aspx 也可以参看: http://stackoverflow.com/questions/3072359/unblocking-a-dll-on-a-company-machine-how stackoverflow上还有其他的解决办法,但核心问题就是安全性,UNBLOCK 来源: https://www.cnblogs.com/zhoucloud/p/5070683.html

C#通过反射调用DLL内部函数

青春壹個敷衍的年華 提交于 2020-02-14 17:47:10
通过反射的方法调用外部DLL文件的函数(要事先知道DLL内的结构:命名空间、函数名称、函数参数类型等) // 依赖 using System . Reflection ; 代码 //加载Dll文件 Assembly assembly = Assembly . LoadFile ( @"dll的路径" ) ; //获取类型,参数(命名空间.类名) Type type = assembly . GetType ( "namespace.ClassName" ) ; //创建该对象的实例,object类型,参数(命名空间.类) object instance = assembly . CreateInstance ( "namespace.ClassName" ) ; //设置要调用方法中的参数类型,Type[]类型,如果有多个参数课追加 //假设要调用的方法只有一个String类型的参数 Type [ ] paramsType = new Type [ 1 ] ; paramsType [ 0 ] = Type . GetType ( "System.String" ) ; //设置要调用方法方法中的参数值,同上可追加 Object [ ] paramsObj = new Object [ 1 ] ; paramsObj [ 0 ] = "参数值" ; //执行ShowPara方法

区分.lib .dll .obj .a .so .o

一世执手 提交于 2020-02-14 05:30:03
DLL: 动态链接库 (DLL) 是作为共享函数库的可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个 DLL 副本的内容。 obj:是CPP对应的二进制代码格式,是未经重定位的! lib:是若干个obj的集合,本质与obj相同! LIB 创建标准库、导入库和导出文件,在生成 32 位程序时可将它们与 LINK 一起使用。LIB 从命令提示运行。 可在下列几种模式下使用 LIB: 生成或修改 COFF 库 将成员对象提取到文件中 创建导出文件和导入库 这些模式是互斥的;每次只能以一种模式使用 LIB。 dll:是可实际运行的二进制代码,有定位代码的! h:是头文件,也可算是源代码,因为当CPP中用#include时,会把包含的文件的内容在CPP中 扩展 开! 动态链接与静态链接的不同之处在于它允许可执行模块(.dll 文件或 .exe 文件)仅包含在运行时定位 DLL 函数的可执行代码所需的信息。在静态链接中,链接器从静态链接库获取所有被引用的函数,并将库同代码一起放到可执行文件中。 使用动态链接代替静态链接有若干优点。DLL 节省内存,减少交换操作,节省磁盘空间,更易于升级

Qt 程序发布指南

只谈情不闲聊 提交于 2020-02-12 11:47:09
Qt 程序发布指南 威武的涛哥 的博客文章地址 https://jaredtao.github.io/2019/09/02/Qt%E5%AE%9E%E7%94%A8%E6%8A%80%E8%83%BD6-%E7%A8%8B%E5%BA%8F%E5%8F%91%E5%B8%83%E6%8C%87%E5%8D%97/ 知乎文章地址 https://zhuanlan.zhihu.com/p/80919147 简介 背景 Qt的安装 Qt的目录结构 Qt安装路径 Qt核心路径 HelloDeploy Window编译和发布 Window 编译 Window 发布 VS运行时库 常见的错误处理 应用程序无法正常启动 启动失败 - no Qt platform plugin OpenGL Context 创建失败 整理 简单裁剪 删减dll 删减plugins 删减qml 简介 本文是《Qt实用技能》系列文章的第六篇,涛哥在这里讨论发布Qt应用程序的知识点。 (第五篇《Qt实用技能5-掌握信号槽使用细节》还在整理中,过几天会发) 背景 有很多人向涛哥询问,Qt程序发布的相关问题,网络上虽然可以搜到一大堆教程,但是可靠的比较少。 所以这次尽我所能,全面、详细地整理一些Qt程序发布的知识点,希望能帮助到更多人。 对老手来说,很多坑都踩过了,无非就是把正确的dll放在正确的路径。 对新手来说