近来,因工作需要,必须解决Delphi7写的主程序调用C#写的dll的问题。在网上一番搜索,又经过种种试验,最终证明有以下两种方法可行:
    编写C#dll的方法都一样,首先在vs2005中创建一个“类库”项目TestDll,
using System.Runtime.InteropServices; 
namespace TestDll
{
     public   interface  I TestClass
    {
       void YourProcedure(stirng param1);
    } 
   [ClassInterface(ClassInterfaceType.None)]
    public   class TestClass:I TestClass
    {
       public void YourProcedure (stirng param1); 
       {    //自己的代码    } 
    }   
}
完成之后,设置项目的属性“Make assembly COM-Visible”为选中状态。编译之后得到 TestClass.dll,把此dll放到Delphi主程序目录下。打开vs2005自带的工具“Visual Studio 2005命令提示”,输入
Regasm  路径/TestClass.dll 向系统注册此dll。

Delphi程序调用此Dll方式有两种:
一、打开vs2005自带的工具“Visual Studio 2005命令提示”,输入 TlbExp  路径/TestClass.dll 得到一个TestClass.tlb 文件。打开Delphi,选择“Project”--“import type library”找到刚才的TestClass.tlb,点击 CreateUnit,向delphi中引入一个com接口。
delphi 调用代码如下:
  var aClass: TestClass; 
  begin
    aClass : =  CoTestClass.Create;
    aClass. YourProcedure ('参数'); 
  end; 
二、不需生成tlb文件,仿照调用Excel的方式。代码如下:
 var aClass: Variant;
begin
  aClass:= CreateOleObject('TestDll.TestClass');
  aClass.YourProcedure ('参数');
end;

以上两种方法都可以调用成功,其中调用regasm.exe向系统注册dll是必需的。第一种方法需要生成tlb文件,并引入delphi中,操作繁琐,但可以看到接口的定义。第二种方法操作简单,但看不到接口的定义。

==============================================================
本人用第二种方法已正常实现功能,但DLL中一些自动创建的方法无法在外部直接调用,需要DLL准备特定的接口函数

http://blog.csdn.net/genispan/article/details/4294487

最新文章

  1. SQL Server 2012 新特性:FileTable
  2. js正则
  3. 湖大OJ-实验C----NFA转换为DFA
  4. NSArray和NSMutableArray
  5. Qt中sleep()的实现(耳目一新的两种方法)
  6. nohup不输出日志信息的方法,及linux重定向学习
  7. 黑马程序员——JAVA基础之内部类,匿名内部类
  8. DP走方格型
  9. C#的winform拼数字游戏
  10. Jquery~$when_done_then的用法
  11. SQL Server审计功能入门:CDC(Change Data Capture)
  12. ubuntu12.04+fuerte 下跑通lsd-slam——数据集
  13. 内存管理之slab分配器
  14. 使用TensorFlow实现回归预测
  15. Oracle常见错误:ORA-06550、ORA-00911、ORA-02085
  16. 处理机调度算法( RR 、HRRF)
  17. [CEOI2007] 树的匹配Treasury
  18. js查询参数
  19. 前端vue框架 脚手架
  20. java Spring 各版本jar包下载地址

热门文章

  1. 基于 MySQL 5.6 keepalived的双主搭建
  2. source insight totalcmd 中文目录
  3. adobe Changing PDF Link Color for Regulatory Submissions
  4. [Angular] USING ZONES IN ANGULAR FOR BETTER PERFORMANCE
  5. Thermally driven workload scheduling in a heterogeneous multi-processor system on a chip
  6. iOS项目中所有icon的尺寸以及命名
  7. 【codeforces 782C】Andryusha and Colored Balloons
  8. Android经常使用UI包裹 - EditText
  9. 给博客签上CC协议
  10. CUDA一维纹理内存