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的面试题集,附我的答案和分析(一)
Nov 19 PHP
在数据量大(超过10万)的情况下
Jan 15 PHP
PHP中动态显示签名和ip原理
Mar 28 PHP
PHP 文章中的远程图片采集到本地的代码
Jul 30 PHP
php中显示数组与对象的实现代码
Apr 18 PHP
PHP操作MongoDB GridFS 存储文件的详解
Jun 20 PHP
php使用类继承解决代码重复的问题
Feb 11 PHP
php实现的Curl封装类Curl.class.php用法实例分析
Sep 25 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
Dec 31 PHP
基于PHP微信红包的算法探讨
Jul 21 PHP
Laravel学习教程之IOC容器的介绍与用例
Aug 15 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 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获取指定函数定义在哪个文件中以及其所在的行号实例
2014/05/08 PHP
PHP文件上传操作实例详解
2016/09/27 PHP
PHP中Session ID的实现原理实例分析
2019/08/17 PHP
用js实现输入提示(自动完成)的实例代码
2013/06/14 Javascript
node.js中的buffer.toJSON方法使用说明
2014/12/14 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
VUE axios发送跨域请求需要注意的问题
2017/07/06 Javascript
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
利用Decorator如何控制Koa路由详解
2018/06/26 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
React事件处理的机制及原理
2018/12/03 Javascript
JS删除String里某个字符的方法
2021/01/06 Javascript
layui实现form表单同时提交数据和文件的代码
2019/10/25 Javascript
Python实现设置windows桌面壁纸代码分享
2015/03/28 Python
使用Python操作Elasticsearch数据索引的教程
2015/04/08 Python
在Python的Django框架中调用方法和处理无效变量
2015/07/15 Python
详解Python的Django框架中inclusion_tag的使用
2015/07/21 Python
Python计算已经过去多少个周末的方法
2015/07/25 Python
解决Python出现_warn_unsafe_extraction问题的方法
2016/03/24 Python
基于python时间处理方法(详解)
2017/08/14 Python
Python实现确认字符串是否包含指定字符串的实例
2018/05/02 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
Django实现学生管理系统
2019/02/26 Python
python numpy 常用随机数的产生方法的实现
2019/08/21 Python
python 使用shutil复制图片的例子
2019/12/13 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
2020/04/27 Python
全球采购的街头服饰和帽子:Urban Excess
2020/10/28 全球购物
2019史上最全Database工程师题库
2015/12/06 面试题
国际经济贸易专业推荐信
2013/11/06 职场文书
校庆接待方案
2014/03/18 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
Golang 如何实现函数的任意类型传参
2021/04/29 Golang
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python
MySQL添加索引特点及优化问题
2022/07/23 MySQL