C#中如何调用Delphi写的Dll

C#中如何调用Delphi写的Dll,第1张

这次开发NET程序正好派上用场。 几个关键技术点: 1 C#要以非托管方式调用DLL 2 C#把整理好的画图数据生成事先定义好格式的XML文件,传给DLL 3 DLL解析XML文件,根据相应格式,要求,画图 4 DLL输出GIF文件(经过比较GIF图像失真率小,且文件大小最小) 5 C#装载GIF文件,传到前台展示 关键代码: C#以下是引用片段: #region 定义调用Delphi写的画图DLL////// 定义调用Delphi写的画图DLL///private class DrawChartFromDll{//定义DLL文件名,此文件路径要加到系统Path中private const string _fileDll = @"Chartdll";//调用非托管Dll,GetChartFromXMLByNet是ChartAccessdll公开的函数名称[DllImport(_fileDll, EntryPoint = "GetChartFromXMLByNet", CharSet = CharSetAnsi, CallingConvention = CallingConventionStdCall)]//C#中的申明

dll 一般用 VC,Delphi C# 等开发工具编写

至于要求就是 dll 是给自已或别人调用的

如果你要考虑广泛的兼容 比如 你用VC 写的,可以给 VC,Delphi,PB,VB,C# 等语言调用

你的 dll 输出函数传参方式就得按固定方式,一般采用Win32API 类似的 cdel 传参方式

dll 有时不仅仅是一些函数库,有些 dll 是一个COM或DCOM组件,支持 regsvr32 xxxdll 来注册,这就要求 dll 中对应的 注册与反注册函数,也就是遵循某个框架。

还有 dll 不一定就是放些函数执行代码,dll中也可以放数据,如或资源(还是或文字)什么的。

参考一些支持多国语言的程序,换一个dll 就显示的不同国家文字,就是通过不同的资源 dll 来实现的。

最后,dll 不一定是 dll 这个怎么说呢,就是你的程序中用到的 一些数据文件或配置文件或记录文件你也可以命名为 xxxdll 这样多数据情况普通用户就不会乱改你的配置/记录文件了。因为相对于 ini 文件 dll 一般用户不是“随意”能用记事本打开来改的。当然不建议这么做。

给你写一个我写的DLL框架,你自己套用就可以,注意procedure的写法以及导出的方法。
EXPROS?你写错了吧,我没有见到这个关键字,可能是exports,这个是一定要有的,位于程序代码后部,dll初始化的Begin前边,用来声明要导出的函数、过程。
至于stdcall,其实加不加也没有什么大区别,都可以执行
library DLL_NAME;
const

type

var

//这里是过程、函数的完整声明,以及过程、函数的完整代码
//最后可以加上stdcall;
procedure p1(vars:vartype ); stdcall;
var
begin

end;
exports
p1;
//这里写出可以被外部程序调用的过程、函数,只要写出函数、过程的标题即可,中间用逗号分开,最后有一个分号(API)
begin
//这里是DLL被载入时初始化执行的部分,可以初始化变量
end


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10220420.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存