- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
dll编程
COM为中间件调用DLL的说明在《PHP调用COM组件的说明》里,已介绍了PHP调用COM组件的方法。如果能用COM调用DLL,再用PHP调用COM,就可以实现PHP对DLL的调用。即以COM作为中间件,让PHP可以调用现成的DLL,可以很大程度上地减少PHP开发的工作量。下面将对COM调用DLL的方法进行说明。采用的是2005环境下的C#语言。1.建立DLL建立类库生成DLL的方法不再说明。需要注意的是如果COM组件具有强命名,一定要也赋予类库强命名,才可以被COM调用;如果COM不具强命名,类库也无需强命名。强命名方法如下:在“开始—VS2005 —VS Tools—VS命令提示符”,输入:sn -k ****_Key.snk将****_Key.snk添加入项目中(在Program Files\MS Visual Studio 2005\VC下),然后打开AssemblyInfo.cs,并加入下面一行的内容:[assembly: AssemblyKeyFile(****_Key.snk)]下面为代码示例:using System;usingSystem.Collections.Generic;usingSystem.Text;namespacePHPInvokeClassLibrary{public class PhpClass{public string Php_func(string a,string b){string c = a + b;return c;}}}2.在COM中调用DLL在COM中类的所有方法都要在类接口中先定义。所以我们要先在类接口中定义一个方法,并赋予其Dispid值,然后在继承的类中实现这个方法,在方法中我们就可以调用我们想要的DLL。COM代码示例如下:using System;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Runtime.InteropServices;usingSystem.Reflection;usingSystem.Data.OleDb;usingSystem.Data;usingSystem.Collections;usingSystem.Collections.Specialized;usingPHPInvokeClassLibrary;namespaceComtest{//类接口[Guid(394BE3FE-18B8-4c5e-B611-75B5C5493A4E)]public interface ITest{[DispId(1)] string Test(string test);[DispId(2)] //固定写法,索引号从1开始string About();[DispId(3)]int Add(int a, int b);//该方法用于调用DLL[DispId(4)]stringPhpFunc();}//事件接口[Guid(45875EE5-5C8D-4016-897A-FCC7DD5A6834), //固定写法InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]public interface ITest_Events{}//类[Guid(854C2016-E7BF-41ea-8F09-B873698E9F8E), //固定写法ClassInterface(ClassInterfaceType.None),ComSourceInterfaces(typeof(ITest_Events))]public class Class2 : ITest //该类继承上面的接口,并实现抽象方法{public string Test(string test){return test;}public string About() { return 欢迎访问 ; }publicint Add(int a, int b) { return a + b; }//该方法实现了类接口Dispid(4)的方法,调用了DLLpublic string PhpFunc(){PhpClass a = new PhpClass();string b = a.Php_func(Ha,what?);return b;}}}3.PHP调用COM那么只要在PHP中使用COM类就可以成功调用DLL中我们想要的方法了!代码如下:?php//dl(comtest.dll);//w32api_register_function(, FuncDll, int); $b=new COM(Comtest.Class2);$t1=126;$t2=456; $r=$b-add($t1,$t
您可能关注的文档
- 20KV电网规划与改造.doc
- 2015级高考全套电学实验练习(电学三大实验,以及五种测电阻方法).doc
- 2014年高考地理模拟测试题(四).doc
- 20分钟让你阅读速度提高3倍.doc
- 20k故障代码.doc
- 20结构有源音箱电路设计.doc
- 2014理科综合训练第14周.doc
- 220KV双回路抢修塔技术资料.doc
- 2015年中考电学六大题型分类汇编.docx
- 220kV开关站XXX线路电容式电压互感器交接试验作业指导书.doc
- J医药公司存货管理的内部控制问题研究共3篇.pdf
- 作品版权登记代理合同模板5篇.pdf
- 河南省南阳市卧龙区2022-2023学年八年级上学期期中调研测试地理试卷(含答案).pdf
- 江西省九江市2023学年中考三模英语试题含答案及点睛.pdf
- 水利工程知识点-隐蔽单元工程验收.pdf
- 医院办公室2023年度工作计划.pdf
- 公司项目到期模板合集(7篇).pdf
- 江苏省海门中学2022-2023学年高一第一学期期末测试英语含答案.pdf
- 江苏省扬州市高邮市校联考2023-2024学年七年级上学期期末语文试题(含答案).pdf
- 江苏开放大学实用法律基础第一次形成性考核作业第二单元作业第二单元练习题.pdf
最近下载
- 2024版 《全民所有自然资源资产核算通则》(报批稿).pdf VIP
- 人教部编版小学道德与法治 这些事我来做 第一课时 教案 教学设计.docx VIP
- 2024-2030年中国远红外线治疗仪行业市场发展趋势与前景展望战略分析报告.docx
- D--TDDownload-松下_AAD03010门机说明书(中文).pdf
- 专题11 导数中的双变量问题2023-2024学年新教材高中数学选择性必修第二册同步教学设计 (北师大版2019).docx
- 环氧车间分析方法标准汇编全解.doc
- 城市轨道交通工程质量安全检查指南(建质[2016]173号).doc
- 标准图集 - 12J003 室外工程.pdf VIP
- 节假日(春节)期间赶工措施.docx VIP
- 部编版一年级汉语拼音拼读练习.doc VIP
文档评论(0)