C# 调用Dll是一种很常见的引用方式,最近我刚刚调用Delphi生成的Dll时候发现好几个问题,网上资料也相对较少,所以贴出来备忘。
EntryPoint = "Init",
CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern int Init();
首先是Delphi 生成的dll具有以下功能,初始化方法Init(),搜索方法UdpSearch(),释放方法Free(),其中搜索方法带有一个回调方法SetSearchReceiveProc(),用来打印搜索到的结果。
首先我们看一下怎么引用DLL:
[DllImport("Api.dll",
//引用dll
在这里我们首先引入API.dll,然后定义入口也就是方法名,下面CharSet可以选择Auto也可以选择Assci。
CallingConvention 必须要选择的是stdCall,如果是C++生成的dll这里就可以选择Cdecl。但我们用的是Delphi的dll所以这里必须选择stdCall。