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 相关文章推荐
php 代码优化的42条建议 推荐
Sep 25 PHP
php实现用户在线时间统计详解
Oct 08 PHP
深入PHP中慎用双等于(==)的详解
Jun 06 PHP
基于PHP读取csv文件内容的详解
Jun 18 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
Jun 29 PHP
神盾加密解密教程(三)PHP 神盾解密工具
Jun 08 PHP
ThinkPHP3.1新特性之字段合法性检测详解
Jun 19 PHP
ThinkPHP学习笔记(一)ThinkPHP部署
Jun 22 PHP
PHP常用处理静态操作类
Apr 03 PHP
php简单实现快速排序的方法
Apr 04 PHP
php获取网站百度快照日期的方法
Jul 29 PHP
smarty中常用方法实例总结
Aug 07 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
在win系统安装配置 Memcached for PHP 5.3 图文教程
2015/03/03 PHP
PHP+Javascript实现在线拍照功能实例
2015/07/18 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
PHPMailer发送邮件
2016/12/28 PHP
javascript 循环读取JSON数据的代码
2010/07/17 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
javascript中有趣的反柯里化深入分析
2012/12/05 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
javascript学习笔记(六)数据类型和JSON格式
2014/10/08 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
2015/11/06 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
js实现有过渡渐变效果的图片轮播相册(兼容IE,ff)
2016/01/19 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
2016/06/12 Javascript
js倒计时小实例(多次定时)
2016/12/08 Javascript
微信小程序获取循环元素id以及wx.login登录操作
2017/08/17 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
2018/12/13 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
layui清除radio的选中状态实例
2019/11/14 Javascript
Python open()文件处理使用介绍
2014/11/30 Python
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
2018/01/20 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
python中dict使用方法详解
2019/07/17 Python
Python 如何反方向迭代一个序列
2020/07/28 Python
Django数据模型中on_delete使用详解
2020/11/30 Python
css3media响应式布局实例
2016/07/08 HTML / CSS
使用HTML5 Canvas API中的clip()方法裁剪区域图像
2016/03/25 HTML / CSS
做一个能自适应高度的textarea的示例代码
2019/09/06 HTML / CSS
Skyscanner英国:苏格兰的全球三大领先航班搜索服务之一
2017/11/09 全球购物
Haglöfs瑞典官方网站:haglofs火柴棍,欧洲顶级户外品牌
2018/10/18 全球购物
应聘医药代表职位求职信
2013/10/21 职场文书
党的群众路线教育实践活动公开承诺书
2014/03/28 职场文书
法院信息化建设方案
2014/05/21 职场文书
公司市场部岗位职责
2015/04/15 职场文书
小学生心理健康活动总结
2015/05/08 职场文书
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android