当前位置: 移动技术网 > IT编程>开发语言>PHP > PHP调用C#开发的dll类库方法

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

2019年06月03日  | 移动技术网IT编程  | 我要评论

琥珀银杏果是什么地方的菜,克洛斯贝尔百景的摄影,春色满乡野txt

有的时候,我们需要在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;引用)

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文件

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测试:

复制代码 代码如下:
<?php 
$r=new com("helloworld.hello"); 
$s=$r->write(); 
echo $s; 
?>
 
命令符下:
复制代码 代码如下:
cd [/d] [drive:][path]  #进入指定路径
cd [..] #返回父目录

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网