gpt4 book ai didi

C# 从 C++ DLL 捕获输出

转载 作者:行者123 更新时间:2023-11-28 04:07:42 26 4
gpt4 key购买 nike

我有一个 C# Windows 应用程序,它在 DLL 中调用 C++ 函数。这些 DLL 函数通过 printf()std::cout 写入控制台。

当我运行我的 C# 应用程序时,我希望能够看到这个输出,但我找不到实现它的方法。

我该怎么做?

最佳答案

我想您有一个 .NET Forms 应用程序。如果是这样,您可以简单地为自己分配一个用于标准输出的控制台窗口。

这是一个最小的例子:

// stdout.dll
extern "C" {
__declspec(dllexport) void __cdecl HelloWorld()
{
cout << "Hello World" << endl;
}
}

将标准句柄初始化为零,并在程序启动时分配一个新的控制台窗口。

static class Program
{
[DllImport("kernel32.dll")]
public static extern bool SetStdHandle(int stdHandle, IntPtr handle);
[DllImport("kernel32.dll")]
public static extern bool AllocConsole();
[DllImport("stdout.dll")]
extern public static void HelloWorld();

/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
SetStdHandle(-10, IntPtr.Zero); // stdin
SetStdHandle(-11, IntPtr.Zero); // stdou
SetStdHandle(-12, IntPtr.Zero); // stderr
AllocConsole();
/* ... */
}
}

在程序流程中调用外部函数:

private void btnHelloWorld_Click(object sender, EventArgs e)
{
Program.HelloWorld();
}

Hello World Console Window

关于C# 从 C++ DLL 捕获输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58427937/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com