gpt4 book ai didi

c# - 如何捕获 C++ 函数 printf() 的输出

转载 作者:行者123 更新时间:2023-12-03 12:49:22 25 4
gpt4 key购买 nike

我以前曾这样做过,但已经有一段时间了,我在查找任何相关示例时遇到问题。我有这个遗留代码:

namespace LegacyUtil {    
public ref class Calc
{
public:
static int Combos(int s)
{
int t = 0;
// bunch of irrelevant loops
printf("%c%d %c%d D%d\n", m, b, a, d, z);
t++;
return t;
}
};
}

注意:如果需要,我可以在 Visual C++ 中编辑/重新编译它,但我必须至少跳过一个环节。

我的问题:如何从 C# 代码中捕获对 printf() 进行的 C++ 调用的输出?我有这个代码:

int test = LegacyUtil.Calc.Combos(1040);

执行成功,但我只得到返回的整数,并且我想要字符串输出。请帮忙!

最佳答案

printf 的输出转到 stdout,它是一个 C 文件流(或 FILE*)。您基本上需要将 C++ 代码的 stdout 映射到 C# 兼容流。

This answer to another question should help you do that.

要将 C++ 流重定向到 C# 控制台输出,您可以尝试(请参阅: Redirecting Console.Out ):

// courtesy of Reed Copsey
[DllImport("Kernel32.dll", SetLastError = true) ]
public static extern int SetStdHandle(int device, IntPtr handle);
...
consoleStream = new FileStream(Console.OpenStandardOutput());
SetStdHandle(-11, consoleStream.handle);

(注意:我根本没有测试过)

关于c# - 如何捕获 C++ 函数 printf() 的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44770656/

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