PHP如何調用C# dll 類庫?我來告訴你

來源:互聯網
上載者:User

有的時候,我們需要在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:處選擇 選擇剛才建立的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 [..] #返回父目錄

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.