处理ide和编译器之间通信的正确方法是什么? [已关闭]

问题描述 投票:0回答:1

我已经编写了自己的编程语言和自托管编译器。我目前正在为这个自托管编译器创建 ide,并正在尝试使 ide 和编译器正确通信。

IDE 并不是一个大窗口,在客户端空间中带有一个文本编辑器。我有一个菜单栏、一个工具栏、一个文件窗口、一个在选项卡式窗口中打开新文件的文本编辑器和一个输出窗口。我目前正在使用 LPCWSTR exePath 在按下运行按钮时运行编译器可执行文件。我可以在 Visual Studio 的输出中看到我的编译器 .exe 正在运行,因此它可以正常工作,但我还没有实现任何从编译器到 ide 获取所需信息的功能。

在 ide 之前,我使用 printf 测试编译器输出,以将调试和输出信息输入控制台,但现在它已经发展,我需要将此信息输入 ide,所以 Windows 方式,信息显示在任一我提供的输出窗口或运行编译器时出现的新控制台。如何正确设置这两个应用程序之间的通信才能正确执行此操作?

我之前尝试过使用.dll,但它不起作用,感谢评论者,我现在知道为什么了。

c windows winapi compiler-construction ide
1个回答
1
投票

通常的方法是通过命令行和标准输出。

在命令行上指定子进程的参数,并将 STARTUPINFO 参数传递给 CreateProcess,在 dwFlags 中设置 STARTF_USESTDHANDLES 并根据需要设置 hStdOutput 和 hStdError 句柄。

在子流程中,使用这些句柄写入父流程所需的任何信息。

当子进程完成时,使用这些句柄来读取进程写入的任何内容。

这假设通常的非交互式编译器进程,您只需将其设置为运行,它就会工作然后返回,而不需要用户输入。

© www.soinside.com 2019 - 2024. All rights reserved.