C++或Python(或其他语言)为C语言控制台应用程序创建GUI
我有一个用Visual C++ 2008 EE创建的控制台应用程序,现在想给它加个图形界面。
一个想法是把这个控制台应用当作一个子进程来运行,然后通过标准输入和输出与它进行沟通。我试着用Python的subprocess模块来实现这个,但出现了死锁(可能是因为我的控制台应用一直在运行)。根据我从这个链接了解到,现在好像无法将一个持续运行的控制台应用与Python的subprocess模块整合在一起。
另一个想法(可能更简单一些)是直接在这个控制台应用项目中添加一个表单。但当我尝试这样做时,Visual Studio会把项目转换成一个支持“公共语言运行时”的项目,不知道这是什么意思,然后添加了表单和一个cpp文件,但编译时出错,提示:
Command line error D8016 : '/MTd' and '/clr' command-line options are incompatible
error BK1506 : cannot open file '.\Debug\Form_TEST.sbr': No such file or directory
我完全不知道这是什么意思。我之前没有接触过C++,但用过一段时间的C和Python。
你有什么建议吗?
2 个回答
1
VS(Visual Studio)把你的应用程序变成CLR类型的原因是,它误以为你想使用winforms,而winforms是.NET框架的一部分,只有你的项目也是.NET类型,才能使用它们。
不过你还有其他选择:
- 可以添加MFC GUI - 这是原生的C++图形用户界面。
- 更好的办法是创建一个新的.NET项目(C#/VB.NET),然后用你想要的图形界面,并通过P-Invoke或COM互操作来调用你的C/C++动态链接库(dll)。
5
如果你拥有这个控制台应用程序的代码,别再费劲去通过输入输出流和它交流了。把你控制台应用程序的逻辑提取出来,放到一个库里,然后从你选择的图形用户界面(GUI)中调用这个库,比如用C#的Windows.Forms,或者Python的GTK,甚至普通的GTK都可以。