gpt4 book ai didi

c++ - 显示控制台和 win32 GUI

转载 作者:搜寻专家 更新时间:2023-10-31 00:42:19 24 4
gpt4 key购买 nike

我正在使用 MinGW 处理代码块,并且我有一个编码项目已经工作了一段时间。我一直在使用的项目是控制台应用程序,我依赖于打印到控制台的调试功能。

但是,最近,我尝试实现 Windows 的“GetOpenFileName()”函数来拉出一个打开的文件框,这样用户打开文件就容易多了。但是,当在包含 header 的控制台应用程序中使用项目时,MinGW 编译器的行为就像找不到该函数一样。然而,我发现将项目更改为 win32 GUI 允许编译器找到函数(我不完全理解为什么,但那只是我)。

问题是这样的:我试图将调试信息输出到控制台,但当然现在应用程序是 win32 GUI,控制台不显示因此我看不到调试信息,我无法将其切换回来控制台应用程序或 Windows 打开文件框代码将无法编译。如何既显示控制台又允许项目正确编译 Windows GUI 代码?

我无法更改调试功能或使用不同的调试功能,因为它们已写入所有类以协助回溯错误,并且至少有 43 个文件,其中大部分使用调试功能。

最佳答案

因此问题似乎不是由项目类型引起的,而是由设置/编译器选项引起的。编译器可以很好地找到函数声明,但链接器现在会提示,因为它找不到定义。

为了解决这个问题,您需要链接到正确的库(如 MSDN 文档中所述,它是 comdlg32.lib)。


在 CodeBlocks 中,您可以通过以下方式做到这一点:

  1. 转到项目菜单并点击构建选项
  2. 点击链接器设置标签。
  3. 点击添加
  4. 键入 comdlg32 并按确定。
  5. 单击确定以保存您的更改并退出。

您的项目现在将在构建时链接到该库。如果您希望所有程序(无论项目与否)链接到该库,您可以将步骤 1 替换为以下步骤:

  1. 转到设置菜单并点击编译器和调试器

其余的与那里相同,但在全局范围内。


值得一提的是,如果您使用原始命令行构建,则可以添加 -lcomdlg32 选项来产生相同的效果。

关于c++ - 显示控制台和 win32 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12148791/

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