天天看點

vs2017開發php,C#編寫的可供PHP調用的com dll(Visual studio 2017)

新增類庫項目

依次選擇“檔案”》“建立”》“項目”,然後選擇“類庫(.net framework)”

添加引用

在“解決方案資料總管”的“引用”點選滑鼠右鍵,才程式集中搜尋“InteropServices”,勾選“System.Runtime.InteropServices”

com可見

在“解決方案資料總管”的項目名稱上點選滑鼠右鍵,選擇“屬性”,然後在“應用程式”面闆選擇“程式集資訊”,勾選“使程式集COM可見”

簽名

在“解決方案資料總管”的項目名稱上點選滑鼠右鍵,選擇“屬性”,然後在“簽名”面闆勾選“為程式集簽名”,然後在下拉菜單選擇“建立”,輸入“簽名檔案名稱”,取消“使用密碼保護密鑰檔案”勾選,點選确認

建立程式

using System.Runtime.InteropServices;

namespace HelloWorld

{

[ComVisible(true)]

public class Say

{

public string Hello()

{

return "Hello World";

}

}

}

釋出dll

點選主菜單“生成”》“生成解決方案”(或者按F6)

注冊com

按鍵盤上的win鍵,打開開始菜單,輸入”vs”搜尋,滑鼠右鍵點選”VS 2017開發人員指令提示符”,選擇用管理者身份打開;

進入生成的dll目錄(通常在項目的bin/release目錄下)

cd d:/helloworld/bin/release

regasm HelloWord.dll

gacutil /i HelloWord.dll

PHP調用com

$r=new Com("HelloWorld.Say");

$s=$r->Hello();

echo $s;

調用出現Uncaught com_exception: Failed to create COM object

http://www.drupalonwindows.com/en/blog/calling-net-framework-and-net-assemblies-php