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

2015-01-24信息快讯网

这篇文章主要介绍了PHP调用C#开发的dll类库方法,包含一个完整的详细的DLL制作步骤和PHP调用方法,需要的朋友可以参考下

有的时候,我们需要在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 [..] #返回父目录

ioncube_loader_win_5.2.dll的错误解决方法
php中magic_quotes_gpc对unserialize的影响分析
php提示Warning:mysql_fetch_array() expects的解决方法
php通过记录IP来防止表单重复提交方法分析
PHP使用glob函数遍历目录或文件夹的方法
php批量添加数据与批量更新数据的实现方法
php使用ereg验证文件上传的方法
PHP使用xmllint命令处理xml与html的方法
Yii框架获取当前controlle和action对应id的方法
Yii入门教程之Yii安装及hello world
php中call_user_func函数使用注意事项
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
php的dl函数用法实例
php实现的DateDiff和DateAdd时间函数代码分享
PHP常用数组函数介绍
php中单个数据库字段多列显示(单字段分页、横向输出)
windows的文件系统机制引发的PHP路径爆破问题分析
浅析PHP程序设计中的MVC编程思想
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
php实现的九九乘法口诀表简洁版
php5.3以后的版本连接sqlserver2000的方法
php的mkdir()函数创建文件夹比较安全的权限设置方法
CMS中PHP判断系统是否已经安装的方法示例
PHP中file_exists函数不支持中文名的解决方法
PHP判断文章里是否有图片的简单方法
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
php采用curl访问域名返回405 method not allowed提示的解决方法
兼容PHP和Java的des加密解密代码分享
让CodeIgniter的ellipsize()支持中文截断的方法
ECMall支持SSL连接邮件服务器的配置方法详解
php的declare控制符和ticks教程(附示例)
zf框架的db类select查询器join链表使用示例(zend框架)
©2014-2024 dbsqp.com