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
  • 相关阅读:
    export、export default 和 exports、module.exports 的区别
    RunJS JavaScript及时运行调试工具
    vuecli 中的devServer配置代理
    vue使用pinyin的npm包将文字转为大写首字母
    vue阻止事件冒泡和默认事件
    解决Elementu的 elform 使用 vif校验失灵问题
    calc()使用方法
    element ui 中的 resetFields() 报错'resetFields' of undefined
    vux中的 scroller 组件,在iOS13上,一停止滑动就跳到顶部问题
    elementui的input加单位符号
  • 原文地址:https://www.cnblogs.com/xihong2014/p/8412506.html
Copyright © 2011-2022 走看看