codeblocks - 如何使用 Code::Blocks 安装 wxWidgets?

标签 codeblocks wxwidgets

我是一名 Windows 开发人员,我需要使用 Code::Blocks 开发多平台 C++ GUI 应用程序。

在我第一次尝试创建一个简单的“Hello World”应用程序时安装 Code::Blocks 和 wxWidgets 后,IDE 向我显示一个带有 $(#wx) 的框

什么是$(#wx)

谷歌搜索教程我看到了这个 image

什么是-g

最后出现如下错误信息:

error message

三天来我一遍又一遍地尝试,但没有成功!
我什至尝试了wxPack。没有任何效果!

对于 VC++、C++Builder 甚至 wxDev-C++,这很简单
只有Code::Blocks 这么难!

谷歌搜索,我发现很多人都有同样的错误,但他们得到的建议对我不起作用!

有人可以一步步告诉我我必须做什么吗?

谢谢。

最佳答案

像往常一样,你的挫败感来自于你的无知。如果您需要了解 C::B,那么,这就是生活。别把时间浪费在生气上,人生苦短。

代码块不依赖于编译器。您可以使用 VC++、MinGW、TDM-GCC、GCC 等。因此,您必须告诉 C::B 编译器要使用。您可以针对不同的“目标”使用不同的编译器(见下文)。

C::B 也不依赖于任何库。如果您想使用 wxWidgets,您必须告诉 C::B 所需的文件以及在哪里可以找到它们。

使用 C::B 的人使用 MinGW 作为编译器是很常见的。这就是为什么当您第一次安装 C::B 时,它会搜索 MinGW,如果找到,则将其设置为默认编译器。您可以在设置->编译器中设置您自己的首选项。调试器也是如此,通常是 GDB。

顺便说一句,请注意 MinGW 只有 32 位。有一个不同的编译器(MinGW 64)。 TDM-GCC 同时提供两种编译器(及其 GDB 版本),我建议在不同的文件夹中安装 32/64 版本,并在 C::B 中将它们设置为不同的编译器。对于 Linux,“母亲”GCC 是事实上的标准。

构建应用程序时,您必须定义一个目标。这只不过是表达“我想要一个 32 位库”或“我想要一个 64 位可执行文件”之类的事情的一种方式。在您的所需项目中,您可以设定多个目标。编译前选择所需的选项(主工具栏中的组合框)。

在开发时,非常建议将目标设置为“调试”。这意味着您想要使用调试器。这就需要使用“调试符号”。使用 GCC(或其“子级”之一,MinGW...),您可以完成它,但将 -g 作为标志添加到编译器。

现在您明白了,您可能不仅设置了一个目标,还设置了多个目标,例如“release 64 exe”、“debug 32 exe”等。对吗?

wxWidgets加入场景

尽管 C::B 是用 wxWidgets 制作的,但它并不随 wxWidgets 一起提供。从wxWidgets site下载您喜欢的版本。虽然提供了一些二进制文件,但如果您使用其他编译器或其他参数,那么您需要自己编译 wxWidgets。请参阅 docs/msw/install.txt 并了解不同的配置(发布、调试、静态/动态库等)。您的“目标”必须与 wxWidgets 配置匹配,因此最好构建多个版本,与您的目标相同。并且不要忘记为您的应用程序目标使用与每个 wxWidgets 目标相同的参数。您可以在项目->构建选项中执行此操作。

与任何编译器一样,您必须告诉在哪里可以找到库和头文件。以及您想要使用的库。 Windows 库(kernel32、user32 等,它们很多,在另一个线程中询问)和 wxWidgets 库。

当您更新应用程序时,您可能会使用较新的 wxWidgets 版本,但也希望使用其他 wxWidgets 版本来支持旧版本。您有几个文件夹。对于您的项目,您应该更新所有目录。这可以很快完成吗?是的。在 C::B 中,您可以定义变量(例如 $wx31dir)并像 $(wx31dir)/include 一样使用它们。重新定义 var 可以节省您大量的输入。

您可以使用一个全局变量$(#wx31dir)或多个项目适合的变量。你的决定。

最后,C::B 为 wxWidgets 应用程序提供了一个项目模板。它会询问您一些位置(wx dirs)和变量。如果您不太了解它的作用,最好不要使用它并自行设置所有内容。第一次很难,我知道。继续吧,如果您注意所需的步骤,您就会得到它。

您读过CodeBlocks manual吗? ?

关于codeblocks - 如何使用 Code::Blocks 安装 wxWidgets?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44909553/

相关文章:

python - 为什么当 a 和 b 都为 True 时,我的 <a> 和 <b> if 条件不执行?

python - 避免在笔记本中单击退出 wxPython TreeCtrl

c++ - 支持存档 wxWidgets 中文件名的 unicode

c++ - wxGrid GetSelectedCells 返回空数组

使用 long double 时,Code::Blocks 给出错误的结果

c++ - 查询虚表的函数偏移量

c++ - 简单的C++密码程序

编译 OpenCL HelloWorld 程序 : Linker Error

c++ - 无法使用任何外部库(代码块)进行编译

c++ - 如何让用户只输入一个字符?