У меня есть C ++ DLL, источник которой у меня есть.В настоящее время он входит в stdout.
Я вызываю методы в этой dll через pinvoke из c #.
Я хочу, чтобы код c # мог получать сообщения журнала, а затем пересылать их всобственный механизм ведения журнала приложения c #.
Я видел несколько вопросов / ответов, касающихся захвата stdout, но я не могу заставить их работать.Если кто-то может предоставить для этого полный пример hello world, это было бы замечательно.
В противном случае я думал об изменении функции c ++, чтобы она принимала какой-либо параметр строки или потока и просто заполняла его сообщениями длябыть прочитанным при возврате функции.
Однако, как мне использовать строку, так как DLL c ++ должен был бы выделить память, и что освободило бы ее?
Есть ли способдля меня, чтобы передать в потоке и читать из потока, используя обычную механику потока C #, но внутри DLL пусть это будет использоваться так же, как обычно, стандартный вывод?близко, но я не хочу записывать это в файл, если что-то подобное будет работать для захвата в поток памяти, что было бы здорово, но я не вижу эквивалентного SafeHandle и т. д. для потока памяти. Перенаправление stdout + stderr в службе Windows C #