用Delphi 8、VB.net以及C#混合编程(转贴)
来源:互联网 发布:东华理工大学宿舍网络 编辑:程序博客网 时间:2024/05/19 05:02
这个礼拜三晚上的.net讲座被取消了,原因是与我的课程冲突,并且近20天内不允许停调课。所以只能在这里将我讲座中的部分演示内容预先公布一下了。
演示内容之一便是“同一平台、多种语言”。在.net的CLR平台上不同语言编写的程序可以相互调用。其UML图如下:
我们使用Delphi 8编写Person类,并编译成DLL文件。代码如下:
在VB.NET添加对Delphi编写的DLL的引用,并编写继承自Person类的Employee类。
下面的工作就是用C#编写代码调用Delphi与VB.NET生成的DLL。分别将两个DLL的引用添加到项目中,然后编写调用程序:
演示内容之一便是“同一平台、多种语言”。在.net的CLR平台上不同语言编写的程序可以相互调用。其UML图如下:
我们使用Delphi 8编写Person类,并编译成DLL文件。代码如下:
unit TPerson;
interface
type
Person = class
private
{ Private Declarations }
public
Name : string;
Age : integer;
constructor Create;
end;
implementation
constructor Person.Create;
begin
inherited Create;
end;
end.
interface
type
Person = class
private
{ Private Declarations }
public
Name : string;
Age : integer;
constructor Create;
end;
implementation
constructor Person.Create;
begin
inherited Create;
end;
end.
在VB.NET添加对Delphi编写的DLL的引用,并编写继承自Person类的Employee类。
Imports System
Public Class EmployeeClass Employee
Inherits TPerson.Person
Public Salary As Int32
Public Sub Show()Sub Show()
Console.WriteLine("The Name is: " & Me.Name)
Console.WriteLine("The Age is:" & Me.Age)
Console.WriteLine("The Salary is:" & Me.Salary)
End Sub
End Class
Public Class EmployeeClass Employee
Inherits TPerson.Person
Public Salary As Int32
Public Sub Show()Sub Show()
Console.WriteLine("The Name is: " & Me.Name)
Console.WriteLine("The Age is:" & Me.Age)
Console.WriteLine("The Salary is:" & Me.Salary)
End Sub
End Class
下面的工作就是用C#编写代码调用Delphi与VB.NET生成的DLL。分别将两个DLL的引用添加到项目中,然后编写调用程序:
using System;
using TEmployee;
public class Client
{
public static void Main()
{
Employee e = new Employee();
e.Name = "Tom";
e.Age = 22;
e.Salary = 1500;
e.Show();
}
}
using TEmployee;
public class Client
{
public static void Main()
{
Employee e = new Employee();
e.Name = "Tom";
e.Age = 22;
e.Salary = 1500;
e.Show();
}
}
到此为止,程序编写完成,看看效果吧。完整的程序代码可以从这里下载。
posted on 2004-10-18 18:05 吕震宇 阅读(1379) 评论(7) 编辑 收藏 收藏至365Key 所属分类: 面向对象技术
2005-08-11 18:48 paddy102
- 用Delphi 8、VB.net以及C#混合编程(转贴)
- 关于MATLAB和c#混合编程以及如何打包的
- [混合编程]VC VB 数组
- VB和VC混合编程
- VB VC混合编程第一步
- VB与Matlab混合编程
- 在线VB.NET转C#代码以及C#转VB.NET代码
- matlab 与 Delphi 混合编程
- Matlab混合编程之NET组件(C#篇)
- 有钱与没钱的C C# DELPHI VB VB.NET JAVA版本
- [转贴] C#与C++的混合编程
- c# matlab混合编程
- c++ c#混合编程
- VS2008C++C#混合编程
- C# matlab混合编程
- C#与VB.net混合开发测试,感受微软大软件平台思想
- VB,VB.NET,C#对比
- 不同编程语言代码转换网站,在线编程语言代码转换,C#转VB.NET,VB.NET转C#
- Photoshop调整图层消除数码照片紫边
- 照片特效:Photoshop用段落文字组成人像
- 能力拓展训练计划
- Photoshop CS制作书法拓印字效果
- 巧用Photoshop为透明玻璃杯抠图
- 用Delphi 8、VB.net以及C#混合编程(转贴)
- 节庆饰品 用Photoshop制作传统喜庆中国结
- Unix学习笔记1--Uinx系统编程概述
- Phtoshop五步制作水晶按钮
- 双喜迎门庆新春!Photoshop制作金灿灿的喜字
- c#精髓 学习笔记-
- Photoshop“风”滤镜巧绘繁星背景特效
- Photoshop制作美丽的“圣诞花环”
- finally, treo 700p
评论
完整的项目我可以发邮件过去。简单代码如下:
C#构建类库,代码:
using System;
namespace CSharpDLL
{
public class Hello
{
public void SayHello()
{
Console.WriteLine("Hello, World!");
Console.WriteLine("Press any key to continue...");
Console.Read();
}
}
}
Delphi 8构建控制台程序(不要用VCL程序,有可能不兼容)。代码如下:
program DelphiClient;
{$APPTYPE CONSOLE}
{%DelphiDotNetAssemblyCompiler 'CSharpDLL.dll'}
uses
SysUtils,
CSharpDLL;
var
h : Hello;
begin
h := Hello.Create();
h.SayHello();
end.
[Fatal Error] File not found: 'D:/Project/代码/DelphiProject/CSharpDLL.dll'
[Fatal Error] Required package 'CSharpDLL' not found
文件的确是在这个位置,但不明白为什么就是找不到,还望Lz再多教几招,呵呵!
我好像找到问题所在了,问题出在我的'D:/Project/代码/DelphiProject/CSharpDLL.dll' 这个路径,在我换了一个全英文路径后,就可以编译通过了。奇怪的是在Delphi8又可以显示看到CSharpDLL.dll中的内容,看来Delphi8编译时不支持汉字,显示支持。不知道这么理解对不对?
再次谢谢热心的lz
1、检查DLL文件是否使用的是Release编译,也许debug编译Delphi不认。
2、Delphi文件中的{%DelphiDotNetAssemblyCompiler 'CSharpDLL.dll'} 中,将'CSharpDLL.dll'改为绝对路径引用,例如'D:/Project/代码/DelphiProject/CSharpDLL.dll' 。
3、查看你的Delphi项目目录下有一个DelphiClient.cfg(扩展名为cfg,文件名是你的项目名)文件,用记事本打开,找到里面有类似这样两句话:
-U"e:/dellcallcsharp/csharpdll/csharpdll/bin/release;E:/DellCallCSharp/csharpdll/csharpdll/bin/release;e:/dellcallcsharp/delphiclient"
-LU"e:/dellcallcsharp/delphiclient/CSharpDLL.dll"
这应当是编译指令参数,看看有没有什么问题。
4、重装Delphi8,呵呵