代码已经用VS2008的c#写成了一个类库,生成了DLL,可是在delphi中调用不了……哪位大侠帮忙指导下!谢谢啊!
我现用delphi7,如果delphi7调用麻烦能不能用delphi2010做中介调用c#的DLL函数再写一个Dll,然后在delphi7中使用?

解决方案 »

  1.   

    delphi调用C#的dll要用到Regasm.exe和TlbExp.exe两个工具,如果装了VS可以去在安装目录下找到。然后在你的环境变量Path中把这两个文件所在的路径加进去,如下是.net 1.0的的路径。
    C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin; 
    C:\WINNT\Microsoft.NET\Framework\v1.1.4322有可能路径和这个不一样,搜索一下就知道了。在VS中建立一个ClassLibrary编译成DLL文件 
    切换到MS-DOS命令行下面,运行: 
    regasm out *.DLL /regfile:*.reg上面的命令行是注册我们的.NET组件,并且产生了一个备用的注册表文件。对应Windows的注册COM文件命令:regsvr32 c:\test.dll   . 
    在.NET下面,注册.NET组件就需要上面的regasm命令了。*.DLL要包括全路径。然后在MS-DOS命令行下面,运行: 
    tlbExp *.dll /out:*.tlb上面的命令行表示将会产生一个.NET组件的类型库 
    有了TLB文件也就和正常的COM组件一样了,运行Delphi导入类型库文件TLB...... 
    和正常的COM调用一样
      

  2.   

    那不是每台客户机都要注册一下,感觉像搭建JAVA开发平台那么麻烦,有没更简便的方法呢!
      

  3.   

    客户机不用注册
    注册只是为了生成类型库文件TLB
    然后给Delphi调用
      

  4.   

    这个我试过好多次,都是不行,就是最简单的一个放回helloworld 都不行。
    2楼的说明是指Com类库,不是普通的dll文件。
    如果你用VS2008写成com类库,再通过2楼的的办法注册成COM组件,在delphi7中导入(import ActiveX),是可以使用的。以上方法,曾在项目中实际使用。
      

  5.   

    另外,在每一台你安装的客户端,都要进行注册的。
    除非你的程序是运行在服务端的。
    你可以写个bat文件自动注册,打个安装包,
    安装的过程,就启动bat文件自动注册。