最近项目需要PHP来解析二进制数据,如果直接PHP做比较麻烦,就想到VC编写COM组件来做,提供PHP调用。文章将介绍VC编写COM组件提供PHP调用,实现一个计算两个数字相加的功能。
用VC创建COM组件
1、vc新建项目 -> ATL项目,输入名称ComTest,ComTest将作为COM组件的名称。
2、到了ATL项目向导,不需要改动,完成向导。向导完成后,vc将会自动生成一系列的程序。
3、切换到类视图,在ComTest项右键,添加类,选择ATL简单对象,
4、来到ATL简单对象向导,输入你要新建的类名 MyClass,完成向导。(注意了,还要填写ProgID,有些vs会自动补全)
5、回到类视图中,在IMyClass右键,添加方法,将会进入添加方法的向导。
6、来到添加方法向导,我们想实现计算2个数相加的功能,如下,参数a和b都是[in] Long,c为COM返回参数,为[out, retval] Long*,是一个指针。完成向导。
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的机子才能使用。
参考
http://blog.csdn.net/mycwq/article/details/22417961
分享到:
相关推荐
要使PHP调用由VC编写的COM组件,首先需要在VC中创建一个COM组件。具体步骤包括: 1. 使用Visual Studio创建一个ATL(Active Template Library)项目,项目名称定义为ComTest,此名称同时作为COM组件的标识。 2. 在...
压缩包子文件 "php-5.3.27-Win32-VC9-x86.msi" 是实际的安装程序,用户下载后双击运行即可启动安装流程,包括安装 PHP 解释器、配置文件(php.ini)、模块和其他必要的组件,以便在 Windows 上搭建 PHP 开发或生产...
6.PHP调用时,需要开启“php_com_dotnet”扩展,并确保PHP的“ext”目录下有“php_com_dotnet.dll”这个文件 7.易语言ActiveX源码改造自“为你芯冻”的易语言写COM(http://bbs.eyuyan.com/read.php?tid=317113) 4....
【标题】"php-7.2.11-Win32-VC15-x64" 指的是PHP编程语言的一个特定版本,即7.2.11,该版本适用于Windows 32位操作系统,并且是使用Visual C++ 15编译器(VC15)构建的64位版本。这个版本的PHP提供了在Windows环境下...
1. 性能优化:由于Phalcon是用C语言编写的,它能够更直接地与PHP的底层交互,从而提供比大多数纯PHP框架更高的执行速度。 2. MVC架构:遵循Model-View-Controller设计模式,使得代码组织清晰,易于维护。 3. 数据库...
总的来说,这个"VC写的上传文件到FTP服务器的OCX控件"是一个强大的工具,它将复杂的FTP文件上传功能集成到了一个可嵌入网页的组件中,为开发者提供了便捷的文件上传解决方案。通过学习和使用这个控件,我们可以更好...
"php_oci8-2.1.3-7.0-ts-vc14-x64.zip" 文件就是一个包含OCI8扩展的压缩包,专为PHP 7.0版本设计,支持线程安全(TS)并采用Visual C++ 14编译器构建,适用于64位Windows系统。 1. **oci8扩展介绍** OCI8是Oracle ...
YAF,全称Yet Another Framework,是由C语言编写的高性能、轻量级的PHP框架,旨在提供一种高效、稳定、易于扩展的开发环境。在PHP社区中,YAF因其良好的性能表现和简洁的API设计而受到广泛关注。本文将深入探讨YAF...
标签 "memcache memcache.dll" 指出这是与 Memcache 相关的组件,`memcache.dll` 是动态链接库文件,是 PHP 运行时调用 Memcache 扩展功能所必需的。这个 DLL 文件包含了扩展的所有功能实现,使得 PHP 脚本能够与 ...
- VS2008是主要的开发环境,提供C/C++语言支持,用于编写和编译PHP扩展模块。 3. **PHP源码包**: php-5.3.10-src.zip - 包含PHP的源代码,是开发自定义扩展的基础。 4. **预编译PHP二进制包**: ...
在PHP中,可以使用COM组件来调用VB的DLL;在Java中,可以使用JNA(Java Native Access)库来调用Windows系统的DLL。 总的来说,这个AES加密模块为开发者提供了一种简单易用的加密工具,能够有效保护数据的安全性。...
当开发者使用特定的编程语言(如C++)编写程序时,他们可以调用运行库中的函数,而无需在每个程序中重复实现这些功能。对于用户来说,这意味着在安装程序时可能需要同时安装相应的运行库,以便程序能正常执行。 VC...
这些电子书涵盖了编程语言和技术领域的广泛知识,包括C#、Java、VC(Visual C++)、PHP、JavaScript、Android、ASP.NET、Objective-C等。以下是针对这些主题的详细知识点概述: 1. **C#**:由微软公司开发的一种...
总之,这些dll文件是PHP连接SQL Server所必需的组件,通过选择合适的版本和类型,可以确保PHP在不同环境下正确地与SQL Server数据库进行通信。正确安装和配置这些扩展,将极大地提升PHP应用程序处理SQL Server数据的...
1. 解压下载的`php-5.5.10-nts-Win32-VC11-x86`压缩包,通常包含`php.ini`配置文件、`php-cgi.exe`(CGI版本)等文件。 2. 将PHP目录添加到系统环境变量`PATH`中,方便命令行调用PHP。 3. 复制`php.ini-development`...
首先,根据您的PHP版本和系统类型,从XDebug官网或www.php100.com下载对应的XDebug组件。例如,对于PHP5.3 VC6版本,应下载`php_xdebug-2.1.0-5.3-vc6.dll`文件。 ##### 2. 在PHP.ini中加载XDebug组件 编辑`...
压缩包中的文件是PHP运行所需的组件和库,如`php5.dll`是PHP解释器的核心库,`icudt51.dll`和`icuin51.dll`等是国际化支持的相关库,`libeay32.dll`和`ssleay32.dll`是用于加密和安全传输的OpenSSL库,`glib-2.dll`...
ISAPI是微软提供的API,用于扩展IIS(Internet Information Services)服务器的功能,而CGI是一种标准,让Web服务器能够调用外部程序来处理请求。 在源代码中,开发者会找到与CGI和ISAPI相关的模块,这些模块允许...
**PHP5.3.8 安装包详解** ...总之,PHP5.3.8是一个功能强大的Web开发工具,这个安装包提供了所有必要的组件来建立和运行PHP应用程序。了解其特性并正确安装配置,将极大地提升开发效率和网站性能。