dll文件

obj,lib,dll,exe

给你一囗甜甜゛ 提交于 2019-12-31 04:59:20
obj,lib,dll,exe的关系 lib是和dll对应的。lib是静态链接库的库文件,dll是动态链接库的库文件。 所谓静态就是link的时候把里面需要的东西抽取出来安排到你的exe文件中,以后运行你的exe的时候不再需要lib。 所谓动态就是exe运行的时候依赖于dll里面提供的功能,没有这个dll,你的exe无法运行。 lib,dll,exe都算是最终的目标文件,是最终产物。而c/c++属于源代码。源代码和最终目标文件中过渡的就是中间代码obj,实际上之所以需要中间代码,是你不可能一次得到目标文件。比如说一个exe需要很多的cpp文件生成。而编译器一次只能编译一个cpp文件。这样编译器编译好一个cpp以后会将其编译成obj,当所有必须要的cpp都编译成obj以后,再统一link成所需要的exe,应该说缺少任意一个obj都会导致exe的链接失败。 1.obj里存的是编译后的代码跟数据,并且有名称,所以在连接时有时会出现未解决的外部符号的问题。当连成exe后便不存在名称的概念了,只有地址。lib就是一堆obj的组合。 2.理论上可以连接obj文件来引用其他工程 (可以认为一个obj文件等价于编译生成它的cpp文件,可以引用obj来替换cpp,也可以添加cpp来替换obj ),但实际中通常用lib来实现工程间相互引用。 3.编译器会默认链接一些常用的库,其它的需要你自己指定。

什么是SDK?

笑着哭i 提交于 2019-12-29 22:38:42
百科名片 基本信息    SDK,Software Development Kit 的缩写,中文即“软件开发工具包”。广义上指辅助开发某一类软件的相关文档、范例和工具的集合。   SDK是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合,一般而言SDK即开发 Windows 平台下的应用程序所使用的SDK。它可以简单的为某个程序设计语言提供应用程序接口 API 的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。一般的工具包括用于调试和其他用途的实用工具。SDK 还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。   为了鼓励开发者使用其系统或者语言,许多 SDK 是免费提供的。软件工程师通常从目标系统开发者那里获得软件开发包,也可以直接从互联网下载,有时也被作为营销手段。例如,营销公司会免费提供构件SDK 以鼓励人们使用它,从而会吸引更多人由于能免费为其编程而购买其构件。   SDK 可能附带了使其不能在不兼容的许可证下开发软件的许可证。例如产品供应商提供一个专有的SDK可能与自由软件开发抵触。 GPL 能使SDK与专有软件开发近乎不兼容。LGPL下的SDK则没有这个问题。 相关背景 API   API(Application Programming Interface

VC 编写 stdcall 方式的DLL

给你一囗甜甜゛ 提交于 2019-12-29 05:25:58
VC工具:VS2005 DELPHI 工具: DELPHI 7 VS2005 新建DLL 新建-项目 保存时选择 DLL 代码 // testdll.cpp : 定义 DLL 应用程序的入口点。 // #include "stdafx.h" #ifdef _MANAGED #pragma managed(push, off) #endif BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; } HRESULT __stdcall TestAdd(int i, int j) { return i + j; } #ifdef _MANAGED #pragma managed(pop) #endif 代码很简单,就一个 TestAdd 注意 不能使用VC的 extern"C" __declspec( dllexport ) HRESULT __stdcall TestAdd(int i, int j) 下一步,新建一个def文件(使用记事本新建,保存为def),VC默认为MFC的DLL带DEF的,其他的不带。 DEF代码: LIBRARY "testdll" EXPORTS TestAdd @1 然后将def加入VS2005,VC6工程中

应用程序框架实战二十九:Util Demo介绍

泄露秘密 提交于 2019-12-29 05:16:29
  上文介绍了我选择EasyUi作为前端框架的原因,并发放了最新Demo。本文将对这个Demo进行一些介绍,以方便你能够顺利运行起来。   这个Demo运行起来以后,是EasyUi的一个简单CRUD操作,数据库中也只有一个简单的表,整个操作不带任何业务逻辑。   看到这里,不少朋友难免感到失望,搞这么复杂一个架构,就只用来实现一个简单的CRUD操作,不是大炮打蚊子吗?   不要急,我的目的不是教你如何实现CRUD,我还没有这么无聊,我是希望通过这个简单的CRUD操作,帮你引出一些框架特性,大致包括下面内容。 分层架构,虽然是一个简单的CRUD,但基本的构造块都包含进来了,还有一些没介绍到的构造,比如领域服务等,我会在后续提供其它示例时再引入。我前面也已经介绍过一些构造,还没介绍到的会补上来。 抽象和封装CRUD操作,虽然CRUD貌不惊人,但不论多复杂的系统,多少有一些CRUD的机械工作,对于简单的系统,CRUD则占据大半江山,所以对CRUD抽象和封装是有必要的。 Mvc控件封装,我将以封装EasyUi控件为例,为你详细介绍如何把Html封装起来,并使用Lambda表达式为你做更多的工作。 依赖注入,对于这种比较复杂的架构,依赖注入框架是必须的,如果没有它,这种架构用起来就非常痛苦了。 查询封装,我已经花了很多篇幅来介绍对查询的一些封装支持。通过这个示例为你介绍简单查询

COM组件转成.NET组件

依然范特西╮ 提交于 2019-12-28 09:28:35
原作者: http://www.cnblogs.com/wubn/archive/2004/09/29/47997.aspx 利用类型库导入器(Type Library Importer)可以将其包装成一个.NET组件,然后就可以像使用.NET组件一样使用它了。 .NET框架只是提供了一个包装,并没有真正改变原有的对象 1.找到要转换的.dll文件 2.在命令提示符窗口中输入.dll文件的文件路径,转到.dll文件所在的文件夹下。 3.输入 tlbimp jmail.dll /out:jmail_new.dll然后回车,就会在当前的文件夹下生成一个DLL文件 jmail_new.dll 4.将转换后的文件jmail_new.dll复制到应用程序的bin文件夹下即可 来源: https://www.cnblogs.com/HelloSnoopy/archive/2004/11/16/64265.html

配置mysql时报错

强颜欢笑 提交于 2019-12-27 05:01:26
配置mysql时无法启动此程序,因为计算机丢失MSVCR100.dll。 去https://cn.dll-files.com/下载相应的版本 复制MSVCR100.dll 粘贴到下面 32位系统: 复制X86文件夹下的DLL文件到C:\WINDOWS\system32目录下 64位系统: 复制X64文件夹下的DLL文件到C:\WINDOWS\system32目录下 复制X86文件夹下的DLL文件到C:\WINDOWS\syswow64目录下 来源: https://www.cnblogs.com/sunzhiqi/p/11236645.html

Java调用dll

末鹿安然 提交于 2019-12-26 20:30:16
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> #编者注 由于需求需要添加一个USB狗,作为服务的license验证。则Java程序需要和dll进行整合。该USB狗已经提供了Java版本的dll,需要自己编写class,载入dll,并声明方法才能够使用。如下内容就是在测试代码调用dll时发生的异常,以及处理方式。 #UnsatisfiedLinkError 异常 ##异常:no xxx in java.library.path 当我们按照如下方式进行编写的时候,假设loadLibrary没有dll文件。 public class UsbDog { static { System.out.println(System.getProperty("user.dir")); System.loadLibrary("lib//123//UT8K_JavaDll"); System.out.println("dll load done."); } } 则会发生如下异常,表示没有找到dll文件 Exception in thread "main" java.lang.UnsatisfiedLinkError: no lib//123//UT8K_JavaDll in java.library.path at java.lang.ClassLoader

使用bat注册dll方法<api开发>

烂漫一生 提交于 2019-12-26 17:31:13
注册dll 1、建立一个txt文件,输入以下内容: " regsvr32 %~dp0\*****.dll "。将“*****”替换为自己的dll文件名称后保存。 2、把txt文件后缀改为.bat。 3、将将注册的dll放在与.bat同文件夹下。 4、**用管理员身份运行.bat文件。 卸载dll 将上述引号内代码改为: "regsvr32 /u %~dp0\DCIScene.dll" 来源: https://www.cnblogs.com/dlut-dsap/p/12103198.html

DLL注入实践

随声附和 提交于 2019-12-25 14:09:16
Windows系统大量使用dll作为组件复用,应用程序也会通过dll实现功能模块的拆分。DLL注入技术是向一个正在运行的进程插入自有DLL的过程。 Window下的代码注入 常见的Windows代码注入方法如下: 注册表注入 编译注册表中的AppInit_DLLs选项,凡是使用GUI的进程,都会读取AppInit_DLLs内容,加载这些Dll。 Windows Hook注入 使用 SetWindowsHookEx、UnHkkkWindowsHookEx 来进行,为目标进程安装钩子,在注入dll中监听目标进程消息。 远程线程注入 使用 CreateRemoteThread 函数在目标进程中创建线程,在该线程中加载注入dll。 DLL函数转发 使用伪造的dll来替换目标dll,两个dll的导出符号完全相同,在自定义DLL中,先利用函数转发器将请求转发到真实dll中,然后进行自己的一些处理。 在本篇文章中,主要介绍 Windows Hook注入 这一种方式。在具体介绍之前,先介绍下Dll的加载顺序、加载过程。 DLL加载顺序 系统在搜索加载指定DLL之前,按照如下顺序做检查: 如果同名DLL已在内存中加载,则直接使用 如果DLL在系统DLL列表中,系统直接使用已知DLL的拷贝 如果DLL依赖其他DLL,系统会按照名字搜索并加载依赖的DLL,待依赖的DLL加载完毕后再加载自身。

找到的程序集的清单定义与程序集引用不匹配

懵懂的女人 提交于 2019-12-23 17:00:00
我试图在C#Windows窗体应用程序(Visual Studio 2005)中运行一些单元测试,但出现以下错误: System.IO.FileLoadException:无法加载文件或程序集“实用程序,版本= 1.2.0.200,区域性=中性,PublicKeyToken = 764d581291d764f7”或其依赖项之一。 找到的程序集的清单定义与程序集引用不匹配。 (HRESULT的异常:0x80131040)** 在x.Foo.FooGO() 在Foo.cs:第123行的x.Foo.Foo2(String groupName_) 在FooTests.cs中的x.Foo.UnitTests.FooTests.TestFoo():行98 ** System.IO.FileLoadException:无法加载文件或程序集“实用程序,版本= 1.2.0.203,区域性=中性,PublicKeyToken = 764d581291d764f7”或其依赖项之一。 找到的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的异常:0x80131040) 我查看了自己的参考文献,并且仅参考了 Utility version 1.2.0.203 (另一个是旧的)。 关于我如何找出试图引用此DLL文件旧版本的任何建议? 此外,我认为我的硬盘上甚至没有这个旧程序集。