使用c#創建php可以調用的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)]
    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組件.
這個regasm 實用程序將創建一個類型庫並在 Windows 註冊表中對其進行註冊,以使 PhysServer2.dll 中的類對 COM 客戶端可用 .
需要做下面步驟
將程序集添加到全局程序集緩存中
進入提示符窗口,輸入: gacutil /I HelloWorld.dll<回車>  
這時,你的這個dll就被複制到全局程序集緩存中了.也就是說無論在這個電腦的哪個硬盤上都可以使用此dll組件了.
如果不進行強命名簽名,這一步會提示加載失敗

PHP測試

<?php
$r=new Com("HelloWorld.Hello");
$s=$r->Write();
echo $s;
?>



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章