在C#中使用Delphi本机dll(DllImport问题)

时间:2012-09-27 13:52:03

标签: c# delphi pinvoke

我在将Delphi本机dll导入.net时遇到问题。 我得到 System.EntryPointNotFoundException

这是我的delphi dll:

procedure ProcedimientoEncriptar(texto,clave,resultado:PChar); export stdcall;
    var ...
    begin
    ....
    ....
    end;

    exports
      ProcedimientoEncriptar ;

这是我的.Net(C#)代码上的DllImport:

[DllImport("CryptoDLL.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Auto)]
        public static extern void ProcedimientoEncriptar([MarshalAs(UnmanagedType.LPStr)]string texto, [MarshalAs(UnmanagedType.LPStr)]string clave, [MarshalAs(UnmanagedType.LPStr)] StringBuilder resultado);

任何帮助将不胜感激, 迭。

1 个答案:

答案 0 :(得分:4)

System.EntryPointNotFoundException的唯一解释是C#代码找到的DLL不是从您显示的Delphi代码生成的DLL。所以,也许C#代码正在挑选DLL的过时版本。或许它正在捡起一个完全不同的DLL。

例如,我的系统在system32目录中有一个名为cryptdll.dll的DLL。很可能是你的C#代码找到的DLL。

为了确保找到正确的DLL,您需要将Delphi DLL的副本放在与C#可执行文件相同的目录中。