PHP调用VC编写的COM组件实例

2015-01-24信息快讯网

最近项目需要PHP来解析二进制数据,如果直接PHP做比较麻烦,就想到VC编写COM组件来做,提供PHP调用。文章将介绍VC编写COM组件提供PHP调用,实现一个计算两个数字相加的功能

 
一、用VC创建COM组件
1、vc新建项目 -> ATL项目,输入名称ComTest,ComTest将作为COM组件的名称。
PHP调用VC编写的COM组件实例_信息快讯网

2、到了ATL项目向导,不需要改动,完成向导。向导完成后,vc将会自动生成一系列的程序。
PHP调用VC编写的COM组件实例_信息快讯网

3、切换到类视图,在ComTest项右键,添加类,选择ATL简单对象,
PHP调用VC编写的COM组件实例_信息快讯网

4、来到ATL简单对象向导,输入你要新建的类名 MyClass,完成向导。(注意了,还要填写ProgID,有些vs会自动补全)
PHP调用VC编写的COM组件实例_信息快讯网

5、回到类视图中,在IMyClass右键,添加方法,将会进入添加方法的向导。
PHP调用VC编写的COM组件实例_信息快讯网

6、来到添加方法向导,我们想实现计算2个数相加的功能,如下,参数a和b都是[in] Long,c为COM返回参数,为[out, retval] Long*,是一个指针。完成向导。
PHP调用VC编写的COM组件实例_信息快讯网
7、在MyClass.cpp找到我们刚刚添加的方法,add(LONG a, LONG b, LONG* c),修改如下:
STDMETHODIMP CMyClass::add(LONG a, LONG b, LONG* c)  
{  
    *c = a + b;  
    return S_OK;  
}

8、编译后,在生成目录找到ComTest.dll,注册到系统
regsvr32 ComTest.dll

二、PHP调用COM组件

<?php  

$com = new COM("ComTest.MyClass") or die("无法调用ComTest");  
echo $com->add(1, 2);  

正常情况下,到这里就完成了。

但默认情况下,PHP调用COM组件的功能是没有打开的。PHP执行以上代码就会报 Fatal error: Class 'COM' not found 错误。修改PHP配置,如下:

extension=php_com_dotnet.dll  

结束语
这个功能是PHP调用COM组件的功能,虽然很方便调用,开发也比较简单,但也因为使用COM组件技术,限定了只有Windows的机子才能使用。



PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
PHP实现数组递归转义的方法
PHP之autoload运行机制实例分析
php+MySQL判断update语句是否执行成功的方法
PHP反射机制用法实例
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
ThinkPHP的MVC开发机制实例解析
destoon供应信息title调用出公司名称的方法
destoon文章模块调用企业会员资料的方法
destoon实现调用图文新闻的方法
destoon调用discuz论坛中带图片帖子的实现方法
修改destoon会员公司的伪静态中的com目录的方法
从零开始学YII2框架(二)通过 Composer 安装扩展插件
从零开始学YII2框架(一)通过Composer安装Yii2框架
PHPer 需要了解的 5 个 Composer 小技巧
浅析PHP程序设计中的MVC编程思想
ThinkPHP3.1新特性之多层MVC的支持
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
php根据年月获取季度的方法
php定义数组和使用示例(php数组的定义方法)
php类声明和php类使用方法示例分享
php中cookie的使用方法
php中session使用示例
thinkphp验证码显示不出来的解决方法
php调用c接口无错版介绍
php调用C代码的实现方法
PHP调用JAVA的WebService简单实例
根据ip调用新浪api获取城市名并转成拼音
php通过字符串调用函数示例
分享下页面关键字抓取components.arrow.com站点代码
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
PHP中VC6、VC9、TS、NTS版本的区别与用法详解
win2003服务器使用WPS的COM组件的一些问题解决方法
关于IIS php调用com组件的权限问题
©2014-2024 dbsqp.com