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 相关文章推荐
windows下PHP APACHE MYSQ完整配置
Jan 02 PHP
ThinkPHP php 框架学习笔记
Oct 30 PHP
浅析php面向对象public private protected 访问修饰符
Jun 30 PHP
php使用codebase生成随机数
Mar 25 PHP
php实现的发送带附件邮件类实例
Sep 22 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
Oct 19 PHP
php可变长参数处理函数详解
Feb 22 PHP
Redis构建分布式锁
Mar 28 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 PHP
php实现QQ小程序发送模板消息功能
Sep 18 PHP
解决laravel session失效的问题
Oct 14 PHP
PHP的new static和new self的区别与使用
Nov 27 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下保存远程图片到本地的办法
2010/08/08 PHP
php的POSIX 函数以及进程测试的深入分析
2013/06/03 PHP
coreseek 搜索英文的问题详解
2013/06/08 PHP
php+highchats生成动态统计图
2014/05/21 PHP
PHP实现Soap通讯的方法
2014/11/03 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
PHP7引入的&quot;??&quot;和&quot;?:&quot;的区别讲解
2019/04/08 PHP
JavaScript 格式字符串的应用
2010/03/29 Javascript
Javascript封装DOMContentLoaded事件实例
2014/06/12 Javascript
JavaScript中的substr()方法使用详解
2015/06/06 Javascript
jQuery表单验证功能实例
2015/08/28 Javascript
jquery实现点击变换导航样式的方法
2015/08/31 Javascript
深入理解jQuery中的事件冒泡
2016/05/24 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
2016/06/12 Javascript
浅谈JS中的三种字符串连接方式及其性能比较
2016/09/02 Javascript
深入理解JavaScript中的预解析
2017/01/04 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
2017/03/28 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
2019/03/06 Javascript
微信用户访问小程序的登录过程详解
2019/09/20 Javascript
JavaScript ES 模块的使用
2020/11/12 Javascript
[02:40]DOTA2英雄基础教程 巨牙海民
2013/12/23 DOTA
Python学习笔记(二)基础语法
2014/06/06 Python
Python实现抓取网页并且解析的实例
2014/09/20 Python
Python中的is和id用法分析
2015/01/26 Python
python 实现一个贴吧图片爬虫的示例
2017/10/12 Python
python实现感知器算法详解
2017/12/19 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
2019/11/21 Python
python 多进程和协程配合使用写入数据
2020/10/30 Python
Django celery异步任务实现代码示例
2020/11/26 Python
Python爬虫自动化爬取b站实时弹幕实例方法
2021/01/26 Python
设计师家具购买和委托在线市场:Viyet
2016/11/16 全球购物
Super-Pharm波兰:药房和香水在一个地方
2020/08/18 全球购物
总裁岗位职责
2013/12/04 职场文书
个性发展自我评价2015
2015/03/09 职场文书
公司员工违法违章行为检讨书
2019/06/24 职场文书