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


Posted in PHP onMarch 29, 2014
 
一、用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 相关文章推荐
提升PHP执行速度全攻略(下)
Oct 09 PHP
PHP date函数参数详解
Nov 27 PHP
php中DOMElement操作xml文档实例演示
Mar 26 PHP
提高PHP编程效率的方法
Nov 07 PHP
php实现12306余票查询、价格查询示例
Apr 17 PHP
ThinkPHP中Session用法详解
Nov 29 PHP
php实现兼容2038年后Unix时间戳转换函数
Mar 18 PHP
PHP 自动加载的简单实现(推荐)
Aug 12 PHP
Yii2中事务的使用实例代码详解
Sep 07 PHP
Laravel学习教程之IOC容器的介绍与用例
Aug 15 PHP
WHOOPS PHP调试库的使用
Sep 29 PHP
php设计模式之装饰模式应用案例详解
Jun 17 PHP
php定义数组和使用示例(php数组的定义方法)
Mar 29 #PHP
php类声明和php类使用方法示例分享
Mar 29 #PHP
php中cookie的使用方法
Mar 29 #PHP
php中session使用示例
Mar 29 #PHP
thinkphp验证码显示不出来的解决方法
Mar 29 #PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
Mar 28 #PHP
php页码形式分页函数支持静态化地址及ajax分页
Mar 28 #PHP
You might like
php 批量生成html,txt文件的实现代码
2013/06/26 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
2013/06/27 PHP
JS是否可以跨文件同时控制多个iframe页面的应用技巧
2007/12/16 Javascript
Prototype Date对象 学习
2009/07/12 Javascript
JavaScript中的Array对象使用说明
2011/01/17 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
js判断手机端(Android手机还是iPhone手机)
2015/07/22 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
2015/08/03 Javascript
JavaScript中Window对象的属性及事件
2015/12/25 Javascript
DeviceOne 让你一见钟情的App快速开发平台
2016/02/17 Javascript
jQuery动态加载css文件实现方法
2016/06/15 Javascript
一个简单的JavaScript Map实例(分享)
2016/08/03 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
vue使用Axios做ajax请求详解
2017/06/07 Javascript
vue页面使用阿里oss上传功能的实例(二)
2017/08/09 Javascript
js实现数组和对象的深浅拷贝
2017/09/30 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
vue webpack重写cookie路径的方法
2019/07/10 Javascript
在win和Linux系统中python命令行运行的不同
2016/07/03 Python
python OpenCV学习笔记直方图反向投影的实现
2018/02/07 Python
flask中过滤器的使用详解
2018/08/01 Python
Python单元测试unittest的具体使用示例
2018/12/17 Python
Python scrapy增量爬取实例及实现过程解析
2019/12/24 Python
Python使用graphviz画流程图过程解析
2020/03/31 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
简单的Python人脸识别系统
2020/07/14 Python
css3动画效果抖动解决方法
2018/09/03 HTML / CSS
英国婚礼商城:Wedding Mall
2019/11/02 全球购物
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
27个经典Linux面试题及答案,你知道几个?
2014/03/11 面试题
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
2014/10/31 面试题
2014学习全国两会精神心得体会2000字
2014/03/11 职场文书
大学生标准自荐书
2014/06/15 职场文书
1000字打架检讨书
2014/11/03 职场文书
2015年毕业生个人自荐书
2015/03/24 职场文书
2015入党个人自传范文
2015/06/26 职场文书