一、Delphi 编写dll 中入口函数或过程后需要加stdcall修饰关键字;
C#中调用Delphi 编写的 DLL文件,采用非托管方式调用的,需要使用 [DllImport (....) ],若系统框架为".NET Framework 2.0以上,需要在解决方案属性中要将目标平台需要选择“ANY CPU”,同时勾选“首选32位”,才可正确调用,否则会出错。
DllImport属性用于指定包含外部方法的实现的dll位置。
(1)DllImport属性只能放在方法声明上。
(2)DllImport具有单个定位参数:指定包含被导入方法的dll名称的dllName参数。
(3)DllImport具有6个命名参数:
a、CallingConvention参数:指示入口点的调用约定,如果未指定CallingConvention,则使用默认值CallingConvention.Winapi;
b、CharSet参数:指示用在入口点种的字符集。如果未指定CharSet,则使用默认值CharSet.Auto;
c、EntryPoint参数:给出所声明的方法在dll中入口点的名称。如果未指定EntryPoint,则使用方法本身的名称;
d、ExactSpelling参数:指示EntryPoint是否必须与指示的入口点的拼写完全匹配。如果未指定ExactSpelling,则使用默认值false;
e、PreserveSig参数:指示方法的签名应被应当被保留还是被转换。当签名被转换时,它被转换为一个具有HRESULT返回值和该返回值的一个名为retval的附加输出参数签名。如果未指定PreserveSig,则使用默认值fals