cod*_*123 5 .net c# c++ dll console
我的Windows应用程序包含C#部分和C ++部分。C#应用程序在运行时会显示一个控制台窗口。
C ++代码被编译成一个DLL,可通过P / Invoke从C#使用。
问题是通过std :: cout从C ++ DLL打印文本不会打印任何内容。从C#打印效果很好。
我怀疑C#接管了控制台,因此C ++无法使用它。解决方法可能是从C#获取控制台句柄,将其传递给C ++,然后使用其将std :: cout连接到控制台窗口。但是我不知道该怎么做。
有任何想法吗?
编辑:我的C ++代码不受管理。
cout执行时由 C/C++ 运行时连接main()。因此,如果 C++ 代码仅限于 DLL,则可能没有cout可写入的内容。(这过于简单化了,但你明白了。)
Console.Out是一个System.IO.TextWriter. 如果您的 C++ 代码是托管的,您可以将其传递给 DLL 并对其进行写入。但如果您通过 P/Invoke 调用它,我怀疑情况并非如此。也许使用命名管道?