PHP调用C#开发的dll类库方法


Posted in PHP onJuly 28, 2014

有的时候,我们需要在php中利用到其他语言编写的dll类库,如C#编写的dll,方法就是利用PHP new COM方法来调用,在调用之前先要把dll库注册并把程序集放入到全局缓存中。

1. 创建一个 C# Class Library ,命名为:HelloWorld
2. 打开项目的属性,在点选左边的 "Application"(就是第一个tab) , 然后点击Assembly Information 按钮 ,在弹出的Dialog中, 必须在底部勾上: Make assembly COM-visible !否则 , 这个dll将不能以COM方式访问 .(  也可以在代码中的类声明中写上[ComVisible(true)] , 效果一样,需要增加using System.Runtime.InteropServices;引用)

PHP调用C#开发的dll类库方法

3. 创建强命名签名文件并使用

使用vs.net的“Vsitual Studio .Net工具”-->Vistual Studio .Net命令提示符,输入 sn -k d:\HelloWorld.snk 回车即创建了强命名签名文件

打开项目的属性,点选左边Signing 勾上Sign the assembly 在 Choose a strong name key file:处选择<Browse> 选择刚才创建的HelloWorld.snk文件

PHP调用C#开发的dll类库方法

4. 创建类库并编译成dll

namespace HelloWorld  

{  

    //[ComVisible(true)] //or check "Assembly COM-Visible" at Application-Assembly_Information dialog ;  

    public class Hello  

    {  

        public string Write()  

        {  

            return "Hello World";  

        }  

    }  

}

 
5. 找到dll文件夹路径 ,然后使用vs.net的“Vsitual Studio .Net工具”-->Vistual Studio .Net命令提示符
进入该dll文件夹下输入:
regasm  HelloWorld.dll<回车>

这时候,这个.dll的.net程序集就变成一个标准的Com组件了,但是还不能用,必须让它变成全局Com组件.
将程序集添加到全局程序集缓存中
进入提示符窗口,输入:

gacutil /I HelloWorld.dll<回车>

 
这时,你的这个dll就被复制到全局程序集缓存中了.也就是说无论在这个电脑的哪个硬盘上都可以使用此dll组件了.
如果不进行强命名签名,这一步会提示加载失败

PHP调用C#开发的dll类库方法

PHP测试:

<?php  

$r=new Com("HelloWorld.Hello");  

$s=$r->Write();  

echo $s;  

?>
 
命令符下:
CD [/D] [drive:][path]  #进入指定路径

CD [..] #返回父目录
PHP 相关文章推荐
基于mysql的论坛(2)
Oct 09 PHP
php将数据库中所有内容生成静态html文档的代码
Apr 12 PHP
php网上商城购物车设计代码分享
Feb 15 PHP
php从数组中随机抽取一些元素的代码
Nov 05 PHP
如何给phpcms v9增加类似于phpcms 2008中的关键词表
Jul 01 PHP
php模拟ping命令(php exec函数的使用方法)
Oct 25 PHP
php根据分类合并数组的方法实例详解
Nov 06 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
Jan 19 PHP
PHP Ajax实现无刷新附件上传
Aug 17 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
Sep 30 PHP
thinkphp分页实现效果
Oct 13 PHP
浅析PHP echo 和 print 语句
Jun 30 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
Jul 28 #PHP
windows的文件系统机制引发的PHP路径爆破问题分析
Jul 28 #PHP
浅析PHP程序设计中的MVC编程思想
Jul 28 #PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
Jul 28 #PHP
php实现的九九乘法口诀表简洁版
Jul 28 #PHP
完美的2个php检测字符串是否是utf-8编码函数分享
Jul 28 #PHP
php5.3以后的版本连接sqlserver2000的方法
Jul 28 #PHP
You might like
微信扫描二维码登录网站代码示例
2013/12/30 PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
2014/03/12 PHP
php计算函数执行时间的方法
2015/03/20 PHP
php编程中echo用逗号和用点号连接的区别
2016/03/26 PHP
laravel框架数据库配置及操作数据库示例
2019/10/10 PHP
使Ext的Template可以解析二层的json数据的方法
2007/12/22 Javascript
Iframe thickbox2.0使用的方法
2009/03/05 Javascript
jQuery照片伸缩效果不影响其他元素的布局
2014/05/09 Javascript
jquery对象和DOM对象的任意相互转换
2016/02/21 Javascript
浅谈js中的延迟执行和定时执行
2016/05/31 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
微信小程序 石头剪刀布实例代码
2017/01/04 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
Node.js读取文件内容示例
2017/03/07 Javascript
Vue中div contenteditable 的光标定位方法
2018/08/25 Javascript
Node.js 实现远程桌面监控的方法步骤
2019/07/02 Javascript
layui2.0使用table+laypage实现真分页
2019/07/27 Javascript
js实现图片实时时钟
2020/01/15 Javascript
Python找出9个连续的空闲端口
2016/02/01 Python
python实现自动发送邮件
2018/06/20 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
2018/10/22 Python
用Python写一个模拟qq聊天小程序的代码实例
2019/03/06 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
Python threading.local代码实例及原理解析
2020/03/16 Python
python selenium xpath定位操作
2020/09/01 Python
标签和贴纸印刷:Lightning Labels
2018/03/22 全球购物
IdealFit官方网站:女性蛋白质、补充剂和运动服装
2019/03/24 全球购物
TobyDeals美国:在电子产品上获得最好的优惠和折扣
2019/08/11 全球购物
建筑文秘专业个人求职信范文
2013/12/28 职场文书
会计辞职信范文
2014/01/15 职场文书
节能宣传周活动总结
2014/05/08 职场文书
国际贸易求职信
2014/07/05 职场文书
家长反馈意见及建议
2015/06/03 职场文书
2015大学生暑假调查报告
2015/07/13 职场文书
求职自我评价参考范文
2019/05/16 职场文书
Python快速实现一键抠图功能的全过程
2021/06/29 Python