dll文件

PHP集成DLL动态链接库方法介绍

六眼飞鱼酱① 提交于 2020-01-19 03:59:39
windows下开发php扩展网上很多资料都说需要Cygwin,其实完全可以不必安装该东东。没错,是可以在linux下生成骨架后拷到windos下来用,但是,如果没有linux环境呢?什么,装虚拟机?我晕,你咋又绕回去了- -! 除了编译外,shell环境主要就是为了生成扩展的骨架,其实骨架已经在php源码包中了了,我们只需要把相关名字替换一下即可使用。 准备: 1、php源码包和windows下的二进制包,以及安装Visual C++,并把Microsoft Visual Studio\Common\MSDev98\Bin的绝对路径添加到windows环境变量 3 2、解压源码包到d:\php_src 3、进入d:\php_src\ext目录,复制skeleton文件夹,并重命名为要开发扩展的名字,本例为“linvo” 4、把二进制包中dev目录下的php5ts.lib文件,拷入新建的linvo目录 5、编辑linvo目录中的php_skeleton.h、skeleton.c、skeleton.dsp这三个文件,替换内容中所有extname为linvo,EXTNAME为LINVO。(严格区分大小写) 编码: 6、编辑php_skeleton.h文件(头文件) 在PHP_FUNCTION(confirm_linvo_compiled);下面编写 PHP_FUNCTION(hello

C#中动态加载和卸载DLL

我怕爱的太早我们不能终老 提交于 2020-01-18 15:47:59
  在C++中加载和卸载DLL是一件很容易的事,LoadLibrary和FreeLibrary让你能够轻易的在程序中加载DLL,然后在任何地方 卸载。在C#中我们也能使用Assembly.LoadFile实现动态加载DLL,但是当你试图卸载时,你会很惊讶的发现Assembly没有提供任何 卸载的方法。这是由于托管代码的自动垃圾回收机制会做这件事情,所以C#不提供释放资源的函数,一切由垃圾回收来做。   这引发了一个问题,用Assembly加载的DLL可能只在程序结束的时候才会被释放,这也意味着在程序运行期间无法更新被加载的DLL。而这个功能在某 些程序设计时是非常必要的,考虑你正在用反射机制写一个查看DLL中所有函数详细信息的程序,程序提供一个菜单让用户可以选择DLL文件,这时就需要让程 序能够卸载DLL,否则一旦用户重新得到新版本DLL时,必须要重新启动程序,重新选择加载DLL文件,这样的设计是用户无法忍受的。   C#也提供了实现动态卸载DLL的方法,通过AppDomain来实现。AppDomain是一个独立执行应用程序的环境,当AppDomain被卸载的 时候,在该环境中的所有资源也将被回收。关于AppDomain的详细资料参考MSDN。下面是使用AppDomain实现动态卸载DLL的代码: 1 using System; 2 using System.Collections

lib和dll文件的区别和联系

与世无争的帅哥 提交于 2020-01-15 22:29:14
什么是lib文件,lib和dll的关系如何 (2008-04-18 19:44:37) (1)lib是编译时需要的,dll是运行时需要的。 如果要完成源代码的编译,有lib就够了。 如果也使动态连接的程序运行起来,有dll就够了。 在开发和调试阶段,当然最好都有。 (2)一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就连接到应用程序中的,而dll文件是运行期才会被调用的。如果有dll文件,那么对应的lib文件一般是一些索引信息,具体的实现在dll文件中。如果只有lib文件,那么这个lib文件是静态编译出来的,索引和实现都在其中。静态编译的lib文件有好处:给用户安装时就不需要再挂动态库了。但也有缺点,就是导致应用程序比较大,而且失去了动态库的灵活性,在版本升级时,同时要发布新的应用程序才行。 (3)在动态库的情况下,有两个文件,一个是引入库(.LIB)文件,一个是DLL文件,引入库文件包含被DLL导出的函数的名称和位置,DLL包含实际的函数和数据,应用程序使用LIB文件链接到所需要使用的DLL文件,库中的函数和数据并不复制到可执行文件中,因此在应用程序的可执行文件中,存放的不是被调用的函数代码,而是DLL中所要调用的函数的内存地址,这样当一个或多个应用程序运行是再把程序代码和被调用的函数代码链接起来,从而节省了内存资源。从上面的说明可以看出,DLL和

.dll和.lib文件的生成和使用 c++

五迷三道 提交于 2020-01-15 22:18:42
DLL与LIB库文件的生成和使用---C++ 两种库 :   包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。   包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。 共有两种链接方式:   动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅包含在运行时定位DLL函数的可执行代码所需的信息。   静态链接使用静态链接库,链接器从静态链接库LIB获取所有被引用函数,并将库同代码一起放到可执行文件中。 两种文件的区别 使用lib需注意两个文件: .h头文件,包含lib中说明输出的类或符号原型或数据结构。应用程序调用lib时,需要将该文件包含入应用程序的源文件中。 .LIB文件。 使用dll需注意三个文件: .h头文件,包含dll中说明输出的类或符号原型或数据结构的.h文件。应用程序调用dll时,需要将该文件包含入应用程序的源文件中。 .LIB文件,是dll在编译、链接成功之后生成的文件,作用是当其他应用程序调用dll时,需要将该文件引入应用程序,否则产生错误( 如果不想用lib文件或者没有lib文件,可以用WIN32 API函数LoadLibrary、GetProcAddress装载)。 dll文件

Unity插件之Unity调用C#编译的DLL

别等时光非礼了梦想. 提交于 2020-01-15 16:50:25
Unity插件分为两种:托管插件(Managed Plugins)和本地插件(Native Plugins)。本文先来说说Unity中的托管插件,本地插件的文章留到下一篇文章再说。 有时候我们会有这样的需求:给第三方公司提供Unity插件,而又不希望第三方看到具体代码,这时就可以将核心代码编译成dll文件供第三方调用。或者说,同一个公司多个项目都用到某个模块,则可以把该模块封装成dll,方便在不同项目之间共用和维护。 关于dll加密的问题,以后有机会了可以考虑写点东西分享出来。 一、创建DLL 打开VS,选择文件 -> 新建 -> 项目后打开新建项目对话框。接着操作如下: 点击确定后,编写如下代码: using System; namespace MyLib { public class MyClass { public static string GetBlogName() { return "Sheh伟伟的简书"; } public static TimeSpan GetBlogTime(DateTime time) { return (time - DateTime.Parse("2016/11/14")); } } } 然后生成dll文件,操作如下图: 提示:也可以用MonoDeveloper创建并生成dll,至于操作步骤可以查看 官网手册 。 二、导入DLL

Lua调用c++ DLL 文件

六月ゝ 毕业季﹏ 提交于 2020-01-15 07:04:17
尽管网上类似的例子不少,但是对于很多新手来说,有些问题并没有说的那么详细 直奔主题 在此,我会列出我参考的文章,有些东西就直接复制的 环境:Visual C++ 2008 Express Edition + Lua 1.5 + SciTE(lua编辑器) 下载 Visual C++ 2008 Express Edition + Lua ,下载后安装,省略N字。 环境配置: 1.打开Visual C++ 2008(后面简称VC2008),新建一个C++ project,File->New Project->Empty Project,在Name栏输入工程名,然后OK. 2.设置生成DLL文件,右键工程名,Properties->Configuration Properties->General->Configuration Type->选择Dynamic Library(.dll) 3.设置C/C++、Lua。C/C++->General->Additional Include Directories->选择Lua的安装路径下的include,我Lua安装在"C:\Program Files\Lua",我的完整路径:"C:\Program Files\Lua\5.1\include"。 4.设置Linker:Linker->General->Additional Library

dll文件32位64位检测工具以及Windows文件夹SysWow64的坑

无人久伴 提交于 2020-01-15 05:40:50
自从操作系统升级到64位以后,就要不断的需要面对32位、64位的问题。相信有很多人并不是很清楚32位程序与64位程序的区别,以及Program Files (x86),Program Files的区别。同时,对于程序的dll文件应该放到System32文件夹,还是SysWow64,大部分人做的决定是,32位程序放到System32,64位程序放到SysWow64。是不是这样呢,那么今天就由我身边发生的一个案例来详细的说明一下。 dll文件不匹配导致数据库无法启动 前段时间,数据库做了一些功能上的改进,于是用VS2010编译检出了一个版本,供测试部测试。测试部拿到数据库后,通过批处理将数据库程序,注册为服务。虽然执行的是批处理,实际上注册服务的过程,是通过运行数据库程序,并给其传入命令行参数来完成的,详情请看这篇文章 玩转Windows服务系列——Debug、Release版本的注册和卸载,及其原理 。 通过批处理运行程序后,出现如下问题: 出现这种问题,测试部不淡定了,叫我去看。我又试着运行了一下程序,依然出现这个问题。“可是在我的机器上运行的挺好的啊”,这是我说的第一句话,相信很多人看了这句话就会心的笑了。 有问题就是有问题,既然我的机器上可以正常运行,那么测试机为什么不行呢,首先要查找原因。 数据库是用VS2010编译的,那么在其他机器上运行

VS2008生成DLL文件的方法、引用dll文件以及意义

人盡茶涼 提交于 2020-01-12 12:43:01
一 VS2008生成dll文件的方法 有两种方法: 1:傻瓜式操作 打开VS2008,依次点击:菜单->文件->新建项目->项目类型visual C#(这里假设为该项目所取的名字是 DllBuild )-> 类库(注意必须是类库) ,即新建一个由纯.cs类库文件组成的程序集,写好代码之后(例如写了一个名为 DllTest.cs 的类,该类的namespace取名为 DllTestNS ),再依次点击:菜单->生成->生成DllBuild,这样你的DllBuild/DllBuild/bin/Debug文件夹或者DllBuild/DllBuild/obj/Debug文件夹里便会自动生成dll文件啦,该文件名称与项目名称一致,即为DllBuild.dll。 2:使用VS命令行 依次点击:开始->运行,输入cmd,在打开的命令行窗口中输入:cd \,按回车,输入下面一行命令: cd c:\Program Files\Microsoft Visual Studio 8\SDK\v2.0>csc /target:library /out:d:\Pager.dll d:\Pager.cs 按回车,这样,便将d:\Pager.cs 文件编译为dll文件并保存为d:\Pager.dll。 在这里有可能会报错,原因是csc.exe文件找不到。此时只需打开资源浏览器explorer,在“我的电脑”中搜索

win8 wamp 安装报错

不问归期 提交于 2020-01-11 11:09:39
可是安装wamp的时候(http://www.wampserver.com/en/#download-wrapper)下载的是64位的,刚开始报 错xxx.dll文件丢失,好吧我把那个xxx.dll文件放进去了,第一关过了,可是安装完了自动启动的时候又报错先是httpd.exe应用程序报 错,然后是php-win.exe文件报错,苦苦百度一天没有解决,只好放弃。装了wamp5,运行一看擦。。。php才是5.2.9版本的。。。老古 董,。。。果断卸载,耐心回到wamp2.5上找问题,百度无果。。。 进入官网有个置顶贴(http://forum.wampserver.com/list.php?2) 这里是链接 http://forum.wampserver.com/read.php?2,123608 在这里下载 http : //www.microsoft.com/zh-CN/download/details.aspx?id=30679 vcredist_x64.exe和vcredist_x86.exe 两个都要安装 来源: https://www.cnblogs.com/maxinliang/p/4160603.html

C#中动态加载和卸载DLL

*爱你&永不变心* 提交于 2020-01-10 19:06:22
原文: C#中动态加载和卸载DLL 在C++中 加载和卸载DLL 是一件很容易的事,LoadLibrary和FreeLibrary让你能够轻易的在程序中加载DLL,然后在任何地方卸载。在 C# 中我们也能使 用 Assembly.LoadFile实现动态加载DLL,但是当你试图卸载时,你会很惊讶的发现Assembly没有提供任何卸载的方法。这是由于托管代码的自动垃圾回收机制会做这件事情,所以 C# 不提供释放资源的函数,一切由垃圾回收来做。 这引发了一个问题, 用 Assembly加载的DLL可能只在程序结束的时候才会被释放,这也意味着在程序运行期间无法更新被加载的DLL。而这个功能在某些程序设计时是非常必要的,考虑你正在 用 反射机制写一个查看DLL中所有函数详细信息的程序,程序提供一个菜单让 用 户可以选择DLL文件,这时就需要让程序能够卸载DLL,否则一旦 用 户重新得到新版本DLL时,必须要重新启动程序,重新选择加载DLL文件,这样的设计是 用 户无法忍受的。 C# 也提供了实现动态卸载DLL的方法,通过AppDomain来实现。AppDomain是一个独立执行应 用 程序的环境, 当AppDomain被卸载的时候,在该环境中的所有资源也将被回收 。关于AppDomain的详细资料参考MSDN。下面是使 用 AppDomain实现动态卸载DLL的代码, using