php-PHP调用C#写的dll组件,提示Failed to create COM object

问题描述

PHP调用C#写的dll组件,提示Failed to create COM object
PHP调用C#写的dll组件,已注册已加载,但是在PHP上仍然是提示
Failed to create COM object `CodeData.GetData'

求解啊,谢谢了。

C#dll生成,设置修改了以下步骤:

1、在生成(Build)属性里选中“为 COM interop 注册”

2、在签名(signing)属性选中“为程序集签名”;

3、新建一个签名,起个名字;

4、取消勾选使用密码保护密钥文件;

5、修改工程属性文件(AssemblyInfo.cs),确认 [assembly: ComVisible(true)] 。

并且使用Visual Stdio的命令提示符里进行手动注册:

gacutil /i CodeData.dll

regasm CodeData.dll

均提示成功。

PHP环境配置是正常的,

<?php
echo ""OK"";
try{
$com = new Com(""CodeData.GetData"");
$result = $com->GetData();
echo $result;
}
catch(Exception $e){
print_r($e->getMessage());
}
$com = null;
?>

这么一段代码,可以输出OK,还有Failed to create COM object `CodeData.GetData'

OKFailed to create COM object `CodeData.GetData': ??Ч????

解决方案

如果注册了,那就要看一下创建对象时为什么失败了。添加一些错误返回信息等

解决方案二:
之前写过,成功过。我后来的例子也不知道为什么和楼主一样。

解决方案三:
如果已经注册了,创建对象时却失败了 那应该是引用dll出错了

解决方案四:
可以确定是,dll组件写的有问题。

解决方案五:
如果注册了,那就要看一下创建对象时为什么失败了。添加一些错误返回信息等

时间: 2024-08-03 00:07:39

php-PHP调用C#写的dll组件,提示Failed to create COM object的相关文章

怎样在C#中调用Delphi6写的DLL

我在编写一个系统时遇到了一个问题,无法在C#中调用Delphi6写的DLL,只因为DLL的参数是string类型的.然后在网上找相关的资料,还是没有结果.经过我的再三琢磨,现在已经解决,特写此文章与大家分享我的喜愉!Dellphi DLL文件:///////////////////////////////////////////////////////////////////library mydll; uses SysUtils, Classes; {$R *.res}function Out

com组件pb-PB 8.0调用C#写的com组件出现对象创建失败

问题描述 PB 8.0调用C#写的com组件出现对象创建失败 PB 8.0调用C#写的com组件出现对象创建失败,请问是不是com组件有什么问题?PB的调用代码绝对没错,组件注册能够成功. 解决方案 你的C#代码设置ComVisible(COM可见)为true了么?用regasm注册了么? 解决方案二: VC调用C#写的COM+组件C#创建COM供PB调用C#创建COM供PB调用

关于asp.net调用pb写的dll问题

问题描述 关于asp.net调用pb写的dll问题 现在asp.net调用pb写的dll我将dll放到bin目录然后添加引用,初始化的时候查看有哪些接口的时候报错出现死循环这里出现函数求值超时,谁遇到过这种情况求大神们指导. 解决方案 Asp.NET调用C++写的dllAsp.NET调用C++写的dllasp.net调用C++的dll 解决方案二: com对象本身是否有问题,先用activex control test container测试. 解决方案三: 如果winform可以调用的话,估计

封装dll-QT调用C#写的DLL问题,请大家指教一下

问题描述 QT调用C#写的DLL问题,请大家指教一下 我这里有个DLL文件,是用C#写的,托管式的,在QT 中应该怎么调用它?在网上找了很久还是不是很清楚 解决方案 C#写的dll可以包装成activex com dll,然后可以通过别的语言调用.还有一个更简单的办法,就是C#这里做成web service,通过进程外网络调用的方式用qt调用.

c#调用pb写的dll无法正常调用

问题描述 c#调用pb写的dll无法正常调用 现在c#调用pb写的dll,我用winform可以正常调用而用webform调用显示找不到函数的入口,请问大神们怎么解决这个问题 解决方案 两者加载dl 的路径,以及依赖项有区别吧. webform在浏览器上,路径等不是本地路径.还有权限控制等也要考虑

c#调用c++写的dll报错,尝试写入受保护的内存。。。求解答

问题描述 c#调用c++写的dll报错,尝试写入受保护的内存...求解答 private void button1_Click(object sender, EventArgs e) { IntPtr key = Marshal.AllocHGlobal(1024); //Marshal.ReleaseComObject(GenerateKeyEx); uint len = 4; string seed = "abcd"; uint slen = (uint)seed.Length;

C#中调用C++写的dll,参数类型为char*[]怎么处理啊

问题描述 C#中调用C++写的dll的时候,传入参数类型为char*path[],即一个char*的数组,请问在C#中这个类型应该怎么写,之前我写过char*类型的,对应的C#中的类型是StringBuilder,那么如果是char*[]类型的话,可以用StringBuilder吗我用了但是不对,求高手指点啊~~~ 解决方案 解决方案二:不需要针对类型做太多要求,指针其实就是C#中的引用类型,他需要你给他一个存储数组的数组的地址,你完全可以用一个list<>来存储需要的数组,list<s

C#调用C++写的dll,C++调用C++的dll

C#语言使用方便,入门门槛较代,上手容易,并且语法与C,java有很类似的地方,IDE做的也好,通用性好,是MS下一代开发的主要力量.但是其开源代码较少,类库不是十分完美,在架构方面还有一些需要做的工作. C++写的程序占用内存较小,直接对内存或者文件操作,因此一些关键的步骤或者一些最内层的循环在一定程序上还需要依赖C++. 下面我做一些简单的例子 第一步,用C++做一个可以导出函数的dll(不采用def文件) cxyMath.h //在这里定义导出哪一些函数   class MyMathFun

java调用delphi写的DLL报错误签名错

问题描述 如题,但并不是每次都报错,只是偶尔.函数参数我只有两个,都是字符串类型:Java这边我定义为string类型,delphi的dll里我定义为widestring类型错误显示为:错误签名AppName:javaw.exeAppVer:6.0.160.1ModName:adsloc32.dllModVer:5.60.0.0Offset:00030b00我写的delphidll里面调用了adsloc32.dll.补充:我用的开发工具是eclipse,delphi3写的DLL. 解决方案 解决