php调用C#生成的dll(二)
2018-02-04 09:27
211 查看
根据上一篇博文,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 SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools,gacutil运行环境版本不限,示例使用NETFX 4.5.1)
执行:gacutil /i SendMailLib.dll
2、注册组件及类型到注册表
命令行转到regasm对应的目录,这里不需要指定SendMailLib.dll位置,自动从全局缓存获取,
命令参考目录:C:\Windows\Microsoft.NET\Framework64\v4.0.30319 </div><div> (注意:版本必须根据操作系统选择 x86 / 64bit, 否则注册后无法调用)
执行:
regasm SendMailLib.dll
动态库是否注册可在注册表中用CTRL-F查看
3、注销组件,并清除相应缓存
regasm SendMailLib.dll /unregister
pause gacutil /u SendMailLib
原因是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 SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools,gacutil运行环境版本不限,示例使用NETFX 4.5.1)
执行:gacutil /i SendMailLib.dll
2、注册组件及类型到注册表
命令行转到regasm对应的目录,这里不需要指定SendMailLib.dll位置,自动从全局缓存获取,
命令参考目录:C:\Windows\Microsoft.NET\Framework64\v4.0.30319 </div><div> (注意:版本必须根据操作系统选择 x86 / 64bit, 否则注册后无法调用)
执行:
regasm SendMailLib.dll
动态库是否注册可在注册表中用CTRL-F查看
3、注销组件,并清除相应缓存
regasm SendMailLib.dll /unregister
pause gacutil /u SendMailLib
相关文章推荐
- 用VS2008生成C++代码的dll及在C#中的调用及常见的类型转换
- 在vb和asp中调用c#生成的.net的dll,详细步骤、截图和代码
- C#项目中调用C++生成的Dll 入门教程
- C#生成DLL以及调用DLL
- [转] 在vb和asp中调用c#生成的.net的dll
- C#调用Matlab生成的dll方法的详细说明
- VC++ (MFC)调用 C#生成DLL的方法
- C#调用MFC程序DLL库——MFC项目DLL生成问题、DLL引用链问题、DLL读取配置文件路径问题
- C#生成dll调用
- C#生成dll并调用
- C#调用ThoughtWorks.QRCode.dll生成带参数二维码
- C# 调用C++工程生成的DLL
- C#dll的生成和调用
- C#生成com组件形式的dll供C++调用
- VB.NET动态加载C#或VB.NET生成的DLL文件调用动画教程[黑白智慧写](动态调用DLL).txt
- VS2010 (MFC)调用 C#生成DLL的两种方法
- C#调用C语言生成的DLL示例
- 在VS2010上使用C#调用非托管C++生成的DLL文件
- 在c#中调用c++生成的dll(wince开发)