php调用 c#、c++写的com组件

一、php调用c++非com组件

1.php打开扩展,我用的 php7.3.4nts

com_dotnet

2.下载dynwrapx.dll

php官方手册及网上很多使用dynwrap.dll去调用其他dll文件,但这个库已经停止开发了,网上另外有一个dynwrapx.dll(简称DWX)的库,是仿照dynwrap.dll开发的 DynamicWrapperX 中文,建议使用这个。

官网

下载最新版本

3. 放置文件

解压后将64文件下的dynwrapx.dll放到C:\Windows\System32,将32文件下的dynwrapx.dll放到C:\Windows\SysWOW64,然后以管理员身份打开cmd,执行 regsvr32 dynwrapx.dll

4.php调用

$dw = new COM("DynamicWrapperX");
$dw->Register("user32.dll", "MessageBoxW", "i=hwwu", "r=l");
$ch = $dw->MessageBoxW(0, "Hello, world!", "Test", 4);
echo $ch;die;

这里要注意: DynamicWrapperX不需要加入缓存中即可直接使用

参考官网给的案例

参考链接1

参考链接2

本人亲测
php 7.2.9、php 7.3.4、PHP 7.4.5这三个版本,用dynwrapx时不需要往php ext下添加扩展,也不用配置extension=dynwrap.dll即可直接使用
php7.3.6尚未成功!

二、php调用c++com组件

参考链接1

1.打开php扩展com_dotnet

2.php代码

<?php
$com = new COM("ComTest.MyClass") or die("无法调用ComTest");
echo $com->add(1, 2);

这个功能是PHP调用COM组件的功能,虽然很方便调用,开发也比较简单,但也因为使用COM组件技术,限定了只有Windows的机子才能使用。

三、php调用c#com组件

1.php测试代码

这里是调用的windows自带的office dll文件

// starting word
$word = new com("word.application") or die("Unable to instantiate Word");
echo "Loaded Word, version {$word->Version}\n";

//bring it to front
$word->Visible = 1;
//
//open an empty document
$word->Documents->Add();
//
//do some weird stuff
$word->Selection->TypeText("This is a test...");
$word->Documents[1]->SaveAs("Useless test.doc");

//closing word
$word->Quit();

//free the object
$word = null;

2.php调用代码

$b = new com("HelloWorld.Hello");
$r = $b->Write();
echo $r;

3.添加到缓存中

c#代码

namespace HelloWorld
{ 
    public class Hello
    {
        public string Write()
        {
            return "Hello World";
        }
    }
}
gacutil /I HelloWorld.dll
regasm  HelloWorld.dll

4.上两行代码,我亲测是需要下载软件才可使用

需要对应的环境才可执行,而且要在根目录下执行

网上搜 Visual Studio 2010 简体中文旗舰版

安装这个软件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张先生002

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值