У меня есть проект DLL с C ++, например:
_declspec(dllexport) bool __stdcall cppPage1(char* Input, char* Output)
{
string str1 = Input;
//blablabla
strcat(Output, "Result#as#a#string");
}
И в C # я использую это с:
[DllImport("ReportContent.dll")]
extern static bool cppPage1()
public void Page1()
{
StringBuilder s1 = new StringBuilder("1#3", 10000);
StringBuilder s2 = new StringBuilder("", 10000);
cppPage1(s1, s2);
}
Как показано выше, я "получаю" некоторую оперативную память сStringBuilder
где C # и C ++ оба могут читать / писать.C ++ считывал Input
из ОЗУ, вычислял логику и записывал в Output
, который также находится в ОЗУ, чтобы C # мог получить результат.Позвольте StringBuilder.Length = 10000
убедиться в том, что этого достаточно в большинстве ситуаций.
Я не думаю, что это хорошая практика, чтобы рассмотреть ОЗУ в C #.Как правильно общаться между C # и C ++?