跪求!!如何用c#写Dll给Delphi调用。在线等待!!! ( 积分: 100 )

  • 主题发起人 猪头哥哥
  • 开始时间

猪头哥哥

Unregistered / Unconfirmed
GUEST, unregistred user!
问题如题!!!
自己写了个例子代码如下:
using System;
using System.Runtime.InteropServices;

namespace IBE
{ public interface PNR
{ string GetPNR(string PNRString);

}
[Guid("45afe420-07af-4746-9594-fe950ca3c9e4")]
public class myclass : PNR
{ public string GetPNR(string PNRString)
{ Wspnr.WSPNR a=new IBE.Wspnr.WSPNR();
string PNRInfo=a.GetPNRInfo(PNRString);
return PNRInfo;

}
}
}
已进行相关属性设定
将工程的 com interpo设置为True
用 vs2003命令提示 生成 密锁对
修改AssemblyInfo.cs 文件相关内容,
在命令提示中用 Regasm ××.dll 。到这步按理说已经生成了真正的Com控件啦。
将生成的Dll文件拷贝到系统System32文件夹中,用regsvr32 注册此Dll,提示---------------------------
RegSvr32
---------------------------
已加载 C:/WINDOWS/system32/××.dll,但没有找到 DllRegisterServer 输入点。
无法注册这个文件。
---------------------------
当然在Delphi中也无法使用了,但是此Dll在c#中可以用。
跪求各位大侠能帮我解释一下到底是那里出问题了。
 

猪头哥哥

Unregistered / Unconfirmed
GUEST, unregistred user!
自己顶。。。。。。。。。。。。。
 
H

hsgrass

Unregistered / Unconfirmed
GUEST, unregistred user!
C#的书好像有介绍吧, 在WIN32程式里面建立一个HOST(CREATE EE什么执行引擎的),即创建COM对象,然后使用它的方法LOAD进去
XX.DLL是没有导出 DllRegisterServer 函数
你可以看看DELPHI自带的TREGXXX.EXE的DEMO,里面就是调用这个函数注册OCX,
你再看COM需要导出什么函数.....
查资料.....
只会这么多啦
 
P

poppy

Unregistered / Unconfirmed
GUEST, unregistred user!
.net只需用Regasm注册成功即可,不用RegSvr32
你用Regasm注册有没有出现问题?
 

猪头哥哥

Unregistered / Unconfirmed
GUEST, unregistred user!
To Poppywo 我用Regasm 注册时没什么问题,但是在Delphi里面引用不了,提示是:不是有效的Com组件!但在c#里面可以正常调用。
 
X

xianjun

Unregistered / Unconfirmed
GUEST, unregistred user!
看看 Demo 吧:
关键字就是“Unmanaged Exports”。
http://cc.borland.com/Item.aspx?id=22688
 
F

fsldg

Unregistered / Unconfirmed
GUEST, unregistred user!
不能提问了。因为我改了邮箱 ,但没发确认码到我新邮箱。现在账户不能用了。请问大家有什么办法没有阿?我只能在这里回复了!
 

晴雯

Unregistered / Unconfirmed
GUEST, unregistred user!
看好看到一篇文章,不知道是否有用。参考一下吧。
http://blog.csdn.net/dingbaosheng/archive/2006/10/19/1341472.aspx
 
L

lvxq

Unregistered / Unconfirmed
GUEST, unregistred user!
***************************
让ロロロ来帮你!!!
***************************


using System;
using System.Runtime.InteropServices;

[assembly: ApplicationName("RFIDServer")]
[assembly: ApplicationAccessControl(false)]
namespace IBE
{ public interface PNR
{ string GetPNR(string PNRString);

}
[Guid("45afe420-07af-4746-9594-fe950ca3c9e4")]
public class myclass : PNR
{ public string GetPNR(string PNRString)
{ Wspnr.WSPNR a=new IBE.Wspnr.WSPNR();
string PNRInfo=a.GetPNRInfo(PNRString);
return PNRInfo;

}
}
}
再加入强名,应该就可以了吧

***************************
有问题么?让ロロロ来帮你吧
***************************
 
Z

zhangmiss

Unregistered / Unconfirmed
GUEST, unregistred user!
关注,正在学习用c#生成标准输出的DLL,请大家指教!
 
顶部