求助:已解决库缺失后CodeBlocks中wxWidgets项目编译出245个警告
SetInitialBaseSize) Hey Frank, those 245 deprecation warnings are totally normal when mixing older wxWidgets code with a newer library version—here’s how to fix them step by step:
1. Replace Deprecated APIs with Current Alternatives
The core issue is your code (or possibly an outdated example) is using functions that wxWidgets has phased out in newer releases. For the specific SetInitialBaseSize warning:
- Instead of calling
window->SetInitialBaseSize(wxSize(300, 200));, useSetInitialSize()instead:window->SetInitialSize(wxSize(300, 200)); - Even better, skip the separate size-setting call entirely by passing your desired size directly in the window’s constructor. For a basic frame, that looks like:
wxFrame* frame = new wxFrame(nullptr, wxID_ANY, "My First App", wxDefaultPosition, wxSize(300, 200));
For other deprecation warnings, the warning message usually hints at the replacement function—follow those clues to update your code to modern wxWidgets standards.
2. Disable Deprecation Warnings Temporarily
If you just want to run your program first and fix the code later, you can tell GCC (CodeBlocks’ default compiler) to suppress these warnings:
- Open your project in CodeBlocks
- Go to Project > Build Options > Compiler Settings > Other Options
- Add this line to the input box:
-Wno-deprecated-declarations - Click OK, then recompile. All deprecation-related warnings will disappear.
3. Use Up-to-Date Example Code
If you’re following an older tutorial, the code might be written for wxWidgets 3.0 or earlier, but you’re using a 3.1+ version (where many old APIs were deprecated). Swap out your example code for the latest "Hello World" from official wxWidgets resources—this will use all current, non-deprecated functions right out the gate.
4. Check for Compatibility Macros in Your Project
Sometimes projects are configured to maintain compatibility with older wxWidgets versions via preprocessor macros, which trigger these warnings:
- Go to Project > Build Options > Compiler Settings > #defines
- Look for macros like
wxCOMPATIBILITY_3_0 - If you find any, delete them—this disables the old API compatibility layer and forces use of modern functions.
内容的提问来源于stack exchange,提问作者Frank

