Вызов C ++ DLL с указателями из приложения C#C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Вызов C ++ DLL с указателями из приложения C#

Сообщение Anonymous »

У меня есть этот сторонний C ++ DLL, который мне нужно позвонить. В документации говорится, например, < /p>

Код: Выделить всё

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;
}
работает без сбоя, но код ошибки возврата 1 («1. Неудача, ошибка», общая ошибка, я думаю, означает, что я называю это неправильно) и TCR (все еще) ноль.


Подробнее здесь: https://stackoverflow.com/questions/794 ... pplication
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»