使用std::cout在DLL中从c#调用
Using std::cout in DLL called from C#
我的Windows应用程序有c#部分和c++部分。c#应用程序在运行时显示一个控制台窗口。
c++代码通过p/Invoke从c#编译成一个DLL。
问题是通过std::cout从c++ DLL打印文本不会打印任何东西。
我怀疑c#已经接管了控制台,所以c++无法得到它的处理。解决方法可能是从c#中获取一个控制台句柄,将其传递给c++,并使用它将std::cout连接到控制台窗口。但是我不知道该怎么做。
任何想法?
编辑:我的c++代码托管。
cout
在main()
执行时由C/c++运行时连接。因此,如果c++代码仅限于DLL,则可能没有cout
可写入。(这是一个过度简化,但你明白的想法。)
Console.Out
为System.IO.TextWriter
。如果你的c++代码是托管的,你可以把它传递给你的DLL并写入它。但如果你通过P/Invoke调用它,我怀疑情况并非如此。也许可以使用命名管道?
基本上,c++运行时没有正确地链接到控制台,因为它应该创建控制台。有一个std::sync_with_stdio
函数应该正确链接std::cout
。
相关文章:
- 从DLL中删除类的实例
- 从 wxWidgets 中的.DLL加载图标
- Dll在同一解决方案中从 c# 项目导入到 c++ 项目
- 如何在C++非托管/本机 DLL 中从注册免费 COM C# 托管 DLL 创建 COM 对象
- 如何在 C++ 中从 dll 实例化类?
- 如何在运行时从 c++ 中的 DLL 文件创建对象?
- 我们如何从 C# 中的 DLL 中获取C++所有方法?
- 在 Python ctype 中从 C++ DLL 传递向量
- 从.dll中调用.lib in C
- 如何在 c++ 生成器 6 中从应用程序源代码创建 dll
- 将 std::cout 从单独线程中的 DLL 重定向到 QTextEdit
- 如何在Go中从DLL的导出函数中获取std::字符串
- 从 DLL 字符串表中获取字符串
- 在LabVIEW中向DLL传递复数和从DLL传递复数
- 从 dll 中的函数返回时堆损坏
- 如何在C++中从DLL到调用应用程序进行通信
- 在C++中从dll调用sqrt.访问违规
- 如何在 C#/Python 中从 DLL 调用函数
- 在Qt中从dll创建WinForm
- 如何在c++中从dll调用设计时未知的函数