在c#中写了如下类库:
amespace netadd
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class add
{
public add()
{
//
// TODO: 在此处添加构造函数逻辑
// }
public int addab(int a,int b)
{
return a+b;
}
}
}
生成时项目属性com interop也设置为true然后使用RegAsm.exe进行了注册
在delphi中对生成的tlb文件进行了引入安装
控件中生成了新的组件 Tadd
但是这个组件没有addad方法阿
怎么使用呢
是我的类写的不对吗?
amespace netadd
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class add
{
public add()
{
//
// TODO: 在此处添加构造函数逻辑
// }
public int addab(int a,int b)
{
return a+b;
}
}
}
生成时项目属性com interop也设置为true然后使用RegAsm.exe进行了注册
在delphi中对生成的tlb文件进行了引入安装
控件中生成了新的组件 Tadd
但是这个组件没有addad方法阿
怎么使用呢
是我的类写的不对吗?
解决方案 »
- messagebeep(1)是怎样回事
- 怎么动态实例化类
- 在delphi中的listbox能否有vb中同样的功能呢?
- 如何让子窗口接收到父窗口发送的自定义消息?
- DELPHIG与SQL Server连接的问题,急!急!
- (紧急求救)DBGrid组件中数据光标的问题
- 为什么?谁来就就我呀
- 急急急!为什么在我自己写的过程(或函数)里写:richedit1.lines.text之类的东西,编译的时候说richedit1没有定义?
- 毕业答辩需要注意什么?参与者均有分!
- 如何对表中记录进行唯一性确定判断
- Delphi QQ群:19072429 访天下名士加入,共同进步!
- 想定义一个不用赋record值的结构,如何写呢?
急啊
在vb里是可以调用成功的
但delphi里不会用啊
var
addab:Taddab;
FHandle:THandle;
begin
FHandle:=loadlibrary('c:\a.dll');
if FHandle>0 then
begin
@addab:=GetProcAddress(FHandle,'addab');
if @addab<>nil then
showmessage(inttostr(addab(1,1)));
end;
freeLibrary(FHandle);
end;
C#中 可以这样 去开发一个COM组件:
新建一个库类zk
using System;
using System.Runtime.InteropServices;
namespace zk
{
public interface Itest
{
string hello(string text);
}
[Guid("45afe420-07af-4746-9594-fe950ca3c9e4")]
public class myclass : Itest
{
public string hello(string text)
{
return text;
}
}
}
进入Visual Studio .NET 2003 命令提示
进入工程所在的目录的bin\Debug\
用命令 sn -k 1.snk 建立一个密锁对.
修改AssemblyInfo.cs中
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyKeyFile("1.snk")]
[assembly: AssemblyKeyName("1.snk")]
编译找个库类会生成zk.dll
命令提示符 输入 regasm zk.dll
再输入 gacutil /I zk.dll
提示Assembly successfully added to the cache
此时注册表中 就会存在{45afe420-07af-4746-9594-fe950ca3c9e4}
OK 了,此时就可以访问zk.myclass对象在vb中的确可以调用zk.myclass对象
但在delphi中引入后,生成的类文件中没有string hello(string text);
这个方法,请多多发言!