PHP調(diào)用C#開發(fā)的dll類庫(kù)方法
有的時(shí)候,我們需要在php中利用到其他語(yǔ)言編寫的dll類庫(kù),如C#編寫的dll,方法就是利用PHP new COM方法來(lái)調(diào)用,在調(diào)用之前先要把dll庫(kù)注冊(cè)并把程序集放入到全局緩存中。
1. 創(chuàng)建一個(gè) C# Class Library ,命名為:HelloWorld
2. 打開項(xiàng)目的屬性,在點(diǎn)選左邊的 "Application"(就是第一個(gè)tab) , 然后點(diǎn)擊Assembly Information 按鈕 ,在彈出的Dialog中, 必須在底部勾上: Make assembly COM-visible !否則 , 這個(gè)dll將不能以COM方式訪問 .( 也可以在代碼中的類聲明中寫上[ComVisible(true)] , 效果一樣,需要增加using System.Runtime.InteropServices;引用)
3. 創(chuàng)建強(qiáng)命名簽名文件并使用
使用vs.net的“Vsitual Studio .Net工具”-->Vistual Studio .Net命令提示符,輸入 sn -k d:\HelloWorld.snk 回車即創(chuàng)建了強(qiáng)命名簽名文件
打開項(xiàng)目的屬性,點(diǎn)選左邊Signing 勾上Sign the assembly 在 Choose a strong name key file:處選擇<Browse> 選擇剛才創(chuàng)建的HelloWorld.snk文件
4. 創(chuàng)建類庫(kù)并編譯成dll
{
//[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命令提示符
進(jìn)入該dll文件夾下輸入:
這時(shí)候,這個(gè).dll的.net程序集就變成一個(gè)標(biāo)準(zhǔn)的Com組件了,但是還不能用,必須讓它變成全局Com組件.
將程序集添加到全局程序集緩存中
進(jìn)入提示符窗口,輸入:
這時(shí),你的這個(gè)dll就被復(fù)制到全局程序集緩存中了.也就是說無(wú)論在這個(gè)電腦的哪個(gè)硬盤上都可以使用此dll組件了.
如果不進(jìn)行強(qiáng)命名簽名,這一步會(huì)提示加載失敗
PHP測(cè)試:
$r=new Com("HelloWorld.Hello");
$s=$r->Write();
echo $s;
?>
命令符下:
CD [..] #返回父目錄
相關(guān)文章
ThinkPHP調(diào)用百度翻譯類實(shí)現(xiàn)在線翻譯
這篇文章主要介紹了ThinkPHP調(diào)用百度翻譯類實(shí)現(xiàn)在線翻譯,需要的朋友可以參考下2014-06-06destoon實(shí)現(xiàn)調(diào)用自增數(shù)字從1開始的方法
這篇文章主要介紹了destoon實(shí)現(xiàn)調(diào)用自增數(shù)字從1開始的方法,很有實(shí)用價(jià)值的一個(gè)技巧,需要的朋友可以參考下2014-08-08php計(jì)算幾分鐘前、幾小時(shí)前、幾天前的幾個(gè)函數(shù)、類分享
這篇文章主要介紹了php計(jì)算時(shí)間幾分鐘前、幾小時(shí)前、幾天前的幾個(gè)函數(shù)、類分享,需要的朋友可以參考下2014-04-04針對(duì)多用戶實(shí)現(xiàn)頭像上傳功能PHP代碼 適用于登陸頁(yè)面制作
這篇文章主要為大家詳細(xì)介紹了針對(duì)多用戶實(shí)現(xiàn)頭像上傳功能PHP代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08phpStudy配置多站點(diǎn)多域名方法及遇到的403錯(cuò)誤解決方法
這篇文章主要介紹了phpStudy配置多站點(diǎn)多域名方法及遇到的403錯(cuò)誤解決方法,需要的朋友可以參考下2017-10-10php+ffmpeg如何獲取視頻縮略圖、視頻分辨率等相關(guān)信息
這篇文章主要給大家介紹了關(guān)于php+ffmpeg如何獲取視頻縮略圖、視頻分辨率等相關(guān)信息的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-03-03Yii數(shù)據(jù)讀取與跳轉(zhuǎn)參數(shù)傳遞用法實(shí)例分析
這篇文章主要介紹了Yii數(shù)據(jù)讀取與跳轉(zhuǎn)參數(shù)傳遞用法,結(jié)合實(shí)例形式分析了Yii中read()與readAll()方法的相關(guān)使用技巧,需要的朋友可以參考下2016-07-07Joomla實(shí)現(xiàn)組件中彈出一個(gè)模式(modal)窗口的方法
這篇文章主要介紹了Joomla實(shí)現(xiàn)組件中彈出一個(gè)模式(modal)窗口的方法,列舉了2種常用的Joomla彈出模式窗口的技巧供大家對(duì)比參考,需要的朋友可以參考下2016-05-05