zoukankan      html  css  js  c++  java
  • php调用C#生成的dll(二)

    根据上一篇博文,php调用c#生成的动态库,运行测试时报Fatal error: Class 'COM' not found in XXXXXXXXX

    原因是php.ini中未开启COM组件的应用,解决方法

    查看php.ini中是否已经开启了com.allow_dcom = true

    从php/ext/里面查找一下有没有这个php_com_dotnet.dll这个文件

    如果没有网上下载个,一般都会有的吧应该大概可能。。

    然后查找这个php.ini里面查找下#extension=php_com_dotnet.dll把前面的#号去掉

    如果找不到就复制,手动添加一下

    然后输出下phpinfo()

    看看有没有com_dotnet 标签中

    COM support enabled

    DCOM support enabled

    .Net support       enabled

    表示COM组件开启成功

    然后新建一个php文件在里面写上:

    $com = new COM('word.application');  (#注意word.application 是电脑中必须有word文档才可以的)

    echo $com;

    如果没错的话应该会显示    Microsoft Word 说明COM扩展已经安装完成了!

    再次运行上次博文中的测试程序,能正常显示“Hello,World”

    c#动态库注册和反注册的几个命令

    1、添加程序集到全局缓存,以便于在任意位置注册该dll组件
    copy SendMail.dll 到 gacutil命令相同的目录
    (命令参考目录 C:Program Files (x86)Microsoft SDKsWindowsv8.1AinNETFX 4.5.1 Tools,gacutil运行环境版本不限,示例使用NETFX 4.5.1)
    执行:gacutil /i SendMailLib.dll
     
     
    2、注册组件及类型到注册表
    命令行转到regasm对应的目录,这里不需要指定SendMailLib.dll位置,自动从全局缓存获取,
    命令参考目录:C:WindowsMicrosoft.NETFramework64v4.0.30319 </div><div>    (注意:版本必须根据操作系统选择 x86 / 64bit, 否则注册后无法调用)
    执行:
    regasm SendMailLib.dll
     
    动态库是否注册可在注册表中用CTRL-F查看
     
    3、注销组件,并清除相应缓存
    regasm SendMailLib.dll /unregister
    pause gacutil /u SendMailLib
  • 相关阅读:
    [20190507]sga_target=0注意修改_kghdsidx_count设置.txt
    进程与线程的区别和联系
    html option选中 回显 取值
    application.properties详解 --springBoot配置文件
    Address already in use: JVM_Bind:8080错误的解决办法
    垃圾回收监视和分析
    垃圾回收器种类
    Java垃圾回收是如何工作的?
    Java垃圾回收简介
    关于堆栈的详细讲解
  • 原文地址:https://www.cnblogs.com/xihong2014/p/8412506.html
Copyright © 2011-2022 走看看