在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方法阿
怎么使用呢
是我的类写的不对吗?

解决方案 »

  1.   

    请帮忙啊
    急啊
    在vb里是可以调用成功的
    但delphi里不会用啊
      

  2.   

    Taddab= Function (a:Integer;b:Integer):Integer;stdcall;
    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;
      

  3.   

    现在我一般是用C#调用Delphi Win32\.NET.没有做过这样的东西.不过李维的Inside VCL书里面有一个这样的范例,你可以去查查看.
      

  4.   

    看到了这样的做法
    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);
    这个方法,请多多发言!
      

  5.   

    lextm(LeLe 你说的Inside VCL里有,我下载了一个附带的源码,可惜例子太多,也没有目录,能告诉是那一章吗?