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
  • 相关阅读:
    Android 系统日期时间的获取
    Android What is Application
    Android 所有颜色代码
    Android onNewIntent
    Android Activity管理类
    Android 应用启动渐变效果
    算法的的代价及其度量
    算法的设计与分析
    算法的描述
    数据结构与算法(python版)教程
  • 原文地址:https://www.cnblogs.com/xihong2014/p/8412506.html
Copyright © 2011-2022 走看看