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基础知识:类与对象(1)
Dec 13 PHP
一步一步学习PHP(1) php开发环境配置
Feb 15 PHP
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
Mar 27 PHP
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
Jan 12 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
Jun 18 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
Sep 04 PHP
php实现的http请求封装示例
Nov 08 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
Mar 31 PHP
php实现评论回复删除功能
May 23 PHP
wordpress自定义标签云与随机获取标签的方法详解
Mar 22 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
Oct 10 PHP
Laravel框架自定义分页样式操作示例
Jan 26 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
中东人咖啡哲学
2021/03/03 咖啡文化
PHP 读取文件内容代码(txt,js等)
2009/12/06 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
2016/01/28 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
Javascript 获取滚动条位置等信息的函数
2009/09/08 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
javascript中的缓动效果实现程序
2012/12/29 Javascript
JavaScript网页定位详解
2014/01/13 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
2015/09/18 Javascript
javascript的理解及经典案例分析
2016/05/20 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
2016/06/12 Javascript
JS只能输入正整数的简单实例
2016/10/07 Javascript
jQuery Chosen通用初始化
2017/03/07 Javascript
js+canvas实现纸牌游戏
2020/03/16 Javascript
js重写alert事件(避免alert弹框标题出现网址)
2020/12/04 Javascript
python元组操作实例解析
2014/09/23 Python
Django中处理出错页面的方法
2015/07/15 Python
Python实现简单的文件传输与MySQL备份的脚本分享
2016/01/03 Python
python3实现UDP协议的服务器和客户端
2017/06/14 Python
python调用百度语音识别api
2018/08/30 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
2020/02/03 Python
Pycharm 解决自动格式化冲突的设置操作
2021/01/15 Python
德国骆驼商店:ActiveFashionWorld
2017/11/18 全球购物
员工自我鉴定
2013/10/09 职场文书
自我评价正确写法范文
2013/12/10 职场文书
竞聘副主任科员演讲稿
2014/01/11 职场文书
经典团队口号大全
2014/06/21 职场文书
岗位说明书怎么写
2014/07/30 职场文书
群众路线教育实践活动总结
2014/10/30 职场文书
2015小学语文教师个人工作总结
2015/05/20 职场文书
《草船借箭》教学反思
2016/02/23 职场文书
简历自我评价范文
2019/04/24 职场文书
2019大学毕业晚会主持词
2019/06/21 职场文书
创业计划书之花店
2019/09/20 职场文书
分享7个 Python 实战项目练习
2022/03/03 Python