Delphi 調用C# 編寫的DLL方法


近來,因工作需要,必須解決Delphi寫的主程序調用C#寫的dll的問題。在網上一番搜索,又經過種種試驗,最終證明有以下兩種方法可行:
    編寫C#dll的方法都一樣,首先在vs2005中創建一個“類庫”項目TestDll,
using System.Runtime.InteropServices;
namespace TestDll
{
     public   interface  ITestClass
    {
       void YourProcedure(string param1);
    }
   [ClassInterface(ClassInterfaceType.None)]
    public   class TestClass:I TestClass
    {
       public void YourProcedure (string 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中,操作繁瑣,但可以看到接口的定義。第二種方法操作簡單,但看不到接口的定義。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM