我正在尝试使用以下签名调用 Delphi DLL 中的方法:
function SMap4Ovr(const OverFileName : ShortString ;
const Aclay : Integer ;
const Acarbon : Double ;
out errstr : ShortString): WordBool;
我在 C# 中使用以下导入:
[DllImport("SMap.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
public static extern bool SMap4Ovr(
string OverFileName,
int Aclay,
double Acarbon,
out string errstr
);
但我得到了一个 AccessViolationException。
我似乎能够调用 DLL 中的几个更简单的方法,这些方法具有字符串参数,但没有整数或双精度数。
我也尝试过 CallingConvention = CallingConvention.Cdecl 但这给了我同样的错误。