| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1457 人关注过本帖, 2 人收藏
标题:利用DLL 实现代码重用
只看楼主 加入收藏
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
结帖率:79.17%
收藏(2)
 问题点数:0 回复次数:3 
利用DLL 实现代码重用
大家知道,不同的编程语言之间直接嵌套的方法只有在非常有限的几种语言直接才可以,但是动态库DLL则具有较强的生命力,下面就让它来展示如何通过DLL来实现代码重用
其实解决的方法,只要将各自的功能函数编译成一个DLL文件即可供其它语言使用。
示例1:在C#中调用Delphi 编写的DLL
// Dellphi DLL文件:
///////////////////////////////////////////////////////////////////
library mydll;

uses
SysUtils,
Classes;

{$R *.res}
function Out_Char(str1:PChar;str2:PChar):Pchar;stdcall;
var
temp:PChar;
begin
GetMem(temp,Length(str1)+Length(str2)+1);
StrCopy(temp,str1);
StrCat(temp,str2);
Result := temp;
end;

Exports
Out_Char;

begin
end.
//////////////////////////////////////////////////////////////
然后在C#中调用方式:
[DllImport("mydll.dll")]
public static extern string Out_Char(string str1,string str2);
就实现了DLL 传string类型数据。

示例2:C#调用C语言创建的DLL函数
// cmdll.c 编译得到 Cmdll.dll 文件
int __declspec(dllexport) MyMethod(int i)
{
   return i*10;
}
//////////////////////////////////////////////////////////////
然后在C#中调用方式:
// program.cs
using System;
using System.Runtime.InteropServices;
public class MyClass
{
   [DllImport("Cmdll.dll")]
   public static extern int MyMethod(int x);

   public static void Main()
   {
      Console.WriteLine("MyMethod() returns {0}.", MyMethod(5));// 这里传入参数值 5
   }
}

按照上述方法,如果我们用非c# 方法定义了一些相关的函数,我们无需重新将其转变到c# 语言的描述方法,而可以直接由这个函数生成DLL文件,供C#调用即可
搜索更多相关主题的帖子: DLL 重用 混合 
2008-09-29 16:07
duanchangren
Rank: 1
等 级:新手上路
威 望:1
帖 子:252
专家分:0
注 册:2008-7-26
收藏
得分:0 
这么舒服的沙发没人坐,不坐的不坐

事在人为
2008-10-21 20:57
skyzoneskyzone
Rank: 1
等 级:新手上路
威 望:1
帖 子:137
专家分:0
注 册:2008-10-6
收藏
得分:0 
好像在哪看到过,不过还是感谢楼主的提供.

读万卷书莫如行万里路,行路在问题答题之中。
2008-10-21 21:36
jerry2060
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-11-22
收藏
得分:0 
我试了一下,提示:“无法在 DLL“C:\myDLL.DLL”中找到名为“Swap”的入口点。”,不知道是什么原因,请楼主帮忙看问题出在什么地方?谢谢!
2008-11-22 21:18
快速回复:利用DLL 实现代码重用
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017594 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved