PHP調(diào)用VC編寫的COM組件實(shí)例
更新時間:2014年03月29日 16:21:18 作者:
最近項(xiàng)目需要PHP來解析二進(jìn)制數(shù)據(jù),如果直接PHP做比較麻煩,就想到VC編寫COM組件來做,提供PHP調(diào)用。文章將介紹VC編寫COM組件提供PHP調(diào)用,實(shí)現(xiàn)一個計算兩個數(shù)字相加的功能
1、vc新建項(xiàng)目 -> ATL項(xiàng)目,輸入名稱ComTest,ComTest將作為COM組件的名稱。

2、到了ATL項(xiàng)目向?qū)?,不需要改動,完成向?qū)?。向?qū)瓿珊?,vc將會自動生成一系列的程序。

3、切換到類視圖,在ComTest項(xiàng)右鍵,添加類,選擇ATL簡單對象,

4、來到ATL簡單對象向?qū)?,輸入你要新建的類?MyClass,完成向?qū)А#ㄗ⒁饬?,還要填寫ProgID,有些vs會自動補(bǔ)全)

5、回到類視圖中,在IMyClass右鍵,添加方法,將會進(jìn)入添加方法的向?qū)А?/DIV>


6、來到添加方法向?qū)?,我們想?shí)現(xiàn)計算2個數(shù)相加的功能,如下,參數(shù)a和b都是[in] Long,c為COM返回參數(shù),為[out, retval] Long*,是一個指針。完成向?qū)А?/DIV>

正常情況下,到這里就完成了。
extension=php_com_dotnet.dll
結(jié)束語
這個功能是PHP調(diào)用COM組件的功能,雖然很方便調(diào)用,開發(fā)也比較簡單,但也因?yàn)槭褂肅OM組件技術(shù),限定了只有Windows的機(jī)子才能使用。

7、在MyClass.cpp找到我們剛剛添加的方法,add(LONG a, LONG b, LONG* c),修改如下:
8、編譯后,在生成目錄找到ComTest.dll,注冊到系統(tǒng)
復(fù)制代碼 代碼如下:
STDMETHODIMP CMyClass::add(LONG a, LONG b, LONG* c)
{
*c = a + b;
return S_OK;
}
{
*c = a + b;
return S_OK;
}
8、編譯后,在生成目錄找到ComTest.dll,注冊到系統(tǒng)
復(fù)制代碼 代碼如下:
regsvr32 ComTest.dll
二、PHP調(diào)用COM組件
復(fù)制代碼 代碼如下:
<?php
$com = new COM("ComTest.MyClass") or die("無法調(diào)用ComTest");
echo $com->add(1, 2);
$com = new COM("ComTest.MyClass") or die("無法調(diào)用ComTest");
echo $com->add(1, 2);
正常情況下,到這里就完成了。
但默認(rèn)情況下,PHP調(diào)用COM組件的功能是沒有打開的。PHP執(zhí)行以上代碼就會報 Fatal error: Class 'COM' not found 錯誤。修改PHP配置,如下:
復(fù)制代碼 代碼如下:
extension=php_com_dotnet.dll
結(jié)束語
這個功能是PHP調(diào)用COM組件的功能,雖然很方便調(diào)用,開發(fā)也比較簡單,但也因?yàn)槭褂肅OM組件技術(shù),限定了只有Windows的機(jī)子才能使用。
相關(guān)文章
使用Rancher在K8S上部署高性能PHP應(yīng)用程序的教程
這篇文章主要介紹了使用Rancher在K8S上部署高性能PHP應(yīng)用程序,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07PHP版單點(diǎn)登陸實(shí)現(xiàn)方案的實(shí)例
本篇文章主要介紹了PHP版單點(diǎn)登陸實(shí)現(xiàn)方案的實(shí)例,具有一定的參考價值,有需要的可以了解一下。2016-11-11php實(shí)現(xiàn)微信支付之現(xiàn)金紅包
這篇文章主要為大家詳細(xì)介紹了php實(shí)現(xiàn)微信支付之現(xiàn)金紅包,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05ThinkPHP5.1驗(yàn)證碼功能實(shí)現(xiàn)的示例代碼
這篇文章主要介紹了ThinkPHP5.1驗(yàn)證碼功能實(shí)現(xiàn)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
最新評論
大家感興趣的內(nèi)容
- 1php獲取數(shù)組長度的方法(有實(shí)例)
- 2PHP保留兩位小數(shù)的幾種方法
- 3PHP錯誤Allowed memory size of 67
- 4使用PHP生成二維碼的兩種方法(帶logo圖像)
- 5微信公眾平臺實(shí)現(xiàn)獲取用戶OpenID的方法
- 6教你如何使用php session
- 7PHP刪除數(shù)組中空值的方法介紹
- 8php發(fā)送get、post請求的6種方法簡明總結(jié)
- 9PHP中把stdClass Object轉(zhuǎn)array的幾個方
- 10微信公眾平臺網(wǎng)頁授權(quán)獲取用戶基本信息中授權(quán)回調(diào)域名設(shè)置的變動
最近更新的內(nèi)容
- thinkPHP框架實(shí)現(xiàn)的短信接口驗(yàn)證碼功能示例
- 用 Composer構(gòu)建自己的 PHP 框架之構(gòu)建路由
- php 刪除指定文件夾的實(shí)例講解
- php如何實(shí)現(xiàn)數(shù)據(jù)庫的備份和恢復(fù)
- PHP數(shù)組去重比較快的實(shí)現(xiàn)方式
- php+mysql實(shí)現(xiàn)簡單登錄注冊修改密碼網(wǎng)頁
- phpstudy2018 訪問目錄服務(wù)權(quán)限問題
- 安裝docker和docker-compose實(shí)例詳解
- 詳解PHP使用日期時間處理器Carbon人性化顯示時間
- PHP腳本自動識別驗(yàn)證碼查詢汽車違章