使用c#建立php可以調用的dll

來源:互聯網
上載者:User

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;?>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.