我在将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);
任何帮助将不胜感激, 迭。
答案 0 :(得分:4)
System.EntryPointNotFoundException
的唯一解释是C#代码找到的DLL不是从您显示的Delphi代码生成的DLL。所以,也许C#代码正在挑选DLL的过时版本。或许它正在捡起一个完全不同的DLL。
例如,我的系统在system32目录中有一个名为cryptdll.dll
的DLL。很可能是你的C#代码找到的DLL。
为了确保找到正确的DLL,您需要将Delphi DLL的副本放在与C#可执行文件相同的目录中。