Code::Blocks 20.03编译wxWidgets项目提示找不到TextFrame.h头文件
问题根因
- 从你贴的编译、链接命令就能直接看到两个核心问题:
- 现在实际运行的编译流程,编译的是Code::Blocks自动生成的
texteditorApp.cpp,链接阶段还在拉取之前残留的GUIFrame.o目标文件,你自己手写的main.cpp、main.h压根没被加入项目的编译清单。 - 报
TextFrame.h: No such file or directory的就是那个自动生成的占位代码——这个头文件你从来没在项目目录下实际创建,也没加进项目文件列表,编译器当然找不到。
- 现在实际运行的编译流程,编译的是Code::Blocks自动生成的
- 为啥报了错还能正常弹出窗口:整个链接流程根本没用到你新写的代码,用的是模板自带的、存放在obj目录下的旧
GUIFrame.o(也就是向导生成的默认空白窗口),旧的可执行文件没被新的编译覆盖,自然能正常弹窗。
解决步骤
- 打开左侧项目管理面板,把所有向导自动生成的占位文件全部从项目里移除:包括
texteditorApp.cpp、texteditorMain.cpp、GUIFrame.cpp、GUIFrame.h,这些都是模板的冗余文件,和你现在写的代码无关。 - 到项目根目录(就是你文件所在的
/home/my-username/Desktop/C++/wxWidgets/texteditor/路径下),手动创建缺失的TextFrame.h文件,最小可运行的参考实现:#ifndef TEXTFRAME_H #define TEXTFRAME_H #include "wx/wx.h" class TextFrame : public wxFrame { public: TextFrame(const wxString& title, int posX, int posY, int width, int height) : wxFrame(nullptr, wxID_ANY, title, wxPoint(posX, posY), wxSize(width, height)) {} }; #endif - 右键项目名,选「添加文件到项目」,把你自己写的
main.h、main.cpp、刚创建的TextFrame.h三个文件全部加载进项目。 - 检查编译搜索路径:右键项目→「构建选项」→「搜索目录」→「编译器」标签页,确认已经把当前项目根目录加进搜索路径,没有的话手动填上对应路径,保证双引号包裹的相对头文件引用能被正常识别。
- 点Code::Blocks的「清理」按钮,把
obj、bin目录下的旧目标文件、旧可执行程序全部删掉,再重新编译,报错就会彻底消失。
内容的提问来源于stack exchange,提问作者Wolf
相关产品推荐
相关产品推荐

