Код: Выделить всё
library_info(char *output);
< /code>
Если вы называете NULL, функция возвращает необходимый размер буфера. Итак, через немного времени я сделал эту работу: < /p>
[DllImport(@"C:\ASEREP\ASEREP64.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
static extern int library_info([MarshalAs(UnmanagedType.LPStr)] StringBuilder info);
public string LibInfo()
{
int len = library_info(null);
StringBuilder output = new StringBuilder(len);
int err = library_info(output);
if (err != 0) { return output.ToString(); } else { return ""; }
}
< /code>
ОК, нормально, но следующий шаг-это одна из более сложных функций ввода: < /p>
T_crit(char const *fluid, double *Tc)
< /code>
И здесь начинаются мои проблемы. Я бы сказал, что я получил *Fluid Код: Выделить всё
TcЯ попробовал несколько вариаций, в настоящее время я нахожусь в
Код: Выделить всё
[DllImport(@"C:\ASEREP\ASEREP64.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
static extern int T_crit([MarshalAs(UnmanagedType.LPStr)] StringBuilder Ref, out double Tc);
public double Tcrit(string Ref)
{
Double Tcr = 0;
StringBuilder stb = new StringBuilder(Ref);
int err = T_crit(stb, out Tcr);
return Tcr;
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... pplication
Мобильная версия