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 Global定义全局变量使用说明
Aug 15 PHP
PHP curl实现抓取302跳转后页面的示例
Jul 04 PHP
YII模块实现绑定二级域名的方法
Jul 09 PHP
PHP经典面试题集锦
Mar 19 PHP
php使用Imagick生成图片的方法
Jul 31 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
Dec 07 PHP
yii2实现根据时间搜索的方法
May 25 PHP
PHP进程通信基础之信号
Feb 19 PHP
浅谈php(codeigniter)安全性注意事项
Apr 06 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
PHP日志LOG类定义与用法示例
Sep 06 PHP
Thinkphp 5.0实现微信企业付款到零钱
Sep 30 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判断字符以及字符串的包含方法属性
2008/08/30 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
2012/07/31 PHP
php操作xml入门之xml标签的属性分析
2015/01/23 PHP
PHP获取数组长度或某个值出现次数的方法
2015/02/11 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
2016/10/08 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
javascript变量声明实例分析
2015/04/25 Javascript
javascript实现可全选、反选及删除表格的方法
2015/05/15 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
Bootstrap栅格系统使用方法及页面调整变形的解决方法
2017/03/10 Javascript
JS中DOM元素的attribute与property属性示例详解
2018/09/04 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
2018/09/27 Javascript
微信头像地址失效踩坑记附带解决方案
2019/09/23 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
2019/12/01 Javascript
[50:58]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 Mineski vs EG
2018/04/03 DOTA
Python中请使用isinstance()判断变量类型
2014/08/25 Python
python求crc32值的方法
2014/10/05 Python
python3实现短网址和数字相互转换的方法
2015/04/28 Python
分析用Python脚本关闭文件操作的机制
2015/06/28 Python
Zookeeper接口kazoo实例解析
2018/01/22 Python
对numpy中向量式三目运算符详解
2018/10/31 Python
Python中一个for循环循环多个变量的示例
2019/07/16 Python
Django对models里的objects的使用详解
2019/08/17 Python
Python基于WordCloud制作词云图
2019/11/29 Python
Python3的socket使用方法详解
2020/02/18 Python
keras中的History对象用法
2020/06/19 Python
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
美国生日蛋糕店:Bake Me A Wish!
2017/02/08 全球购物
澳大利亚和新西兰最大的在线旅行社之一:Aunt Betty
2019/08/07 全球购物
护理自荐信
2013/10/22 职场文书
幼儿园中班评语大全
2014/04/17 职场文书
租房协议书样本
2014/08/20 职场文书
党员年终个人总结
2015/02/14 职场文书
律政俏佳人观后感
2015/06/09 职场文书