Hi,
I am trying to build codeblocks src code. But whenever I try to build it, it shows me error in app.cpp file.
Is this error common to all or I am the one getting it. I have added a screenshot for reference
Build Log: -------------- Build: src in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler)---------------
mingw32-g++.exe -Wall -g -pipe -mthreads -fmessage-length=0 -fexceptions -Winvalid-pch -Wno-unused-local-typedefs -std=gnu++11 -DHAVE_W32API_H -D__WXMSW__ -DWXUSINGDLL -DcbDEBUG -DCB_PRECOMP -DWX_PRECOMP -DwxUSE_UNICODE -DBUILDING_PLUGIN -Wno-deprecated-declarations -Wno-unused-local-typedefs -std=gnu++11 -iquote.objs\include -I.objs\include -I. -IC:\wxMSW-2.8.12\wxMSW-2.8.12\include -IC:\wxMSW-2.8.12\wxMSW-2.8.12\lib\gcc_dll\mswu -Isdk\wxscintilla\include -Isdk\wxpropgrid\include -Iinclude\tinyxml -IC:\MinGW\include -Iinclude -Iinclude\scripting\include -Iinclude\scripting\sqplus -Iinclude\mozilla_chardet -Iinclude\mozilla_chardet\mfbt -Iinclude\mozilla_chardet\nsprpub\pr\include -Iinclude\mozilla_chardet\xpcom -Iinclude\mozilla_chardet\xpcom\base -Iinclude\mozilla_chardet\xpcom\glue -Iexchndl\win32\include -IC:\wxMSW-2.8.12\wxMSW-2.8.12\lib\gcc_dll\mswud -IC:\MinGW\include -ID:\nebo\codeblocks_wit_extra_feature\src\sdk\wxscintilla\include -ID:\nebo\codeblocks_wit_extra_feature\src\include -ID:\nebo\codeblocks_wit_extra_feature\src\include\tinyxml -c D:\nebo\codeblocks_wit_extra_feature\src\src\app.cpp -o .objs\src\app.o
D:\nebo\codeblocks_wit_extra_feature\src\src\app.cpp: In function 'void EnableLFH()':
D:\nebo\codeblocks_wit_extra_feature\src\src\app.cpp:822:62: error: 'HEAP_INFORMATION_CLASS' has not been declared
typedef BOOL (WINAPI *HeapSetInformation_t)(HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T);
^
D:\nebo\codeblocks_wit_extra_feature\src\src\app.cpp:838:47: error: 'HeapCompatibilityInformation' was not declared in this scope
HeapSetInformation_func(h[i], HeapCompatibilityInformation, &HeapFragValue, sizeof(HeapFragValue));
^
Process terminated with status 1 (0 minute(s), 17 second(s))
2 error(s), 0 warning(s) (0 minute(s), 17 second(s))
On checking the location where HEAP_INFORMATION is defined, I get to know that it is defined in C;\MINGW\include\winnt.h. I am including this path in compiler (search directories/compiler -> C:\MINGW\include). But still this error is continued to come.
P.S: Yes, I have included winnt.h header file in app.cpp
But if I copy the HEAP_INFORMATION_CLASS enum from file "winnt.h" and paste it inside "app.cpp" it starts working fine.
Why I am experiencing this strange behaviour, Any idea?
Also building forward, codeblocks gave me error in debuggergdb.cpp file also
-------------- Build: tinyXML in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler)---------------
Target is up to date.
-------------- Build: AutoRevision in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler)---------------
Target is up to date.
-------------- Build: ConsoleRunner in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler)---------------
Target is up to date.
-------------- Build: Squirrel in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler)---------------
Target is up to date.
-------------- Build: Squirrel std lib in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler)---------------
Target is up to date.
-------------- Build: SqPlus in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler)---------------
Target is up to date.
-------------- Build: scintilla in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler)---------------
Target is up to date.
-------------- Build: wxpropgrid in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler)---------------
Target is up to date.
Running target pre-build steps
build_tools\autorevision\autorevision +wx +int +t .. include/autorevision.h
'svn' is not recognized as an internal or external command,
operable program or batch file.
-------------- Build: sdk in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler)---------------
Target is up to date.
Running target post-build steps
cmd /c if not exist devel\share\CodeBlocks mkdir devel\share\CodeBlocks
zip -jq9 devel\share\CodeBlocks\manager_resources.zip sdk\resources\*.xrc
cmd /c "cd sdk\resources & zip -0 -q ..\..\devel\share\CodeBlocks\manager_resources.zip images\*.png images\12x12\*.png images\16x16\*.png"
Running target pre-build steps
cmd /c if exist devel\exchndl.dll del devel\exchndl.dll
-------------- Build: src in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler)---------------
Target is up to date.
Running target post-build steps
cmd /c if not exist devel\share\CodeBlocks mkdir devel\share\CodeBlocks
zip -jq9 devel\share\CodeBlocks\resources.zip src\resources\*.xrc
zip -jq9 devel\share\CodeBlocks\start_here.zip src\resources\start_here\*.html src\resources\start_here\*.png
cmd /c "cd src\resources & zip -0 -q ..\..\devel\share\CodeBlocks\resources.zip images\*.png images\16x16\*.png"
cmd /c if not exist devel\exchndl.dll if exist exchndl\win32\bin\*.dll xcopy /Y exchndl\win32\bin\*.dll devel\
exchndl\win32\bin\dbghelp.dll
exchndl\win32\bin\exchndl.dll
exchndl\win32\bin\mgwhelp.dll
exchndl\win32\bin\symsrv.dll
4 File(s) copied
cmd /c if not exist devel\symsrv.yes if exist exchndl\win32\bin\symsrv.yes xcopy /Y exchndl\win32\bin\symsrv.yes devel\
-------------- Build: Abbreviations in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler)---------------
Target is up to date.
Running target post-build steps
cmd /c if not exist devel\share\CodeBlocks mkdir devel\share\CodeBlocks
zip -jq9 devel\share\CodeBlocks\abbreviations.zip plugins\abbreviations\resources\manifest.xml plugins\abbreviations\resources\*.xrc
-------------- Build: AStyle in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler)---------------
Target is up to date.
Running target post-build steps
cmd /c if not exist devel\share\CodeBlocks mkdir devel\share\CodeBlocks
zip -jq9 devel\share\CodeBlocks\Astyle.zip plugins\astyle\resources\manifest.xml plugins\astyle\resources\*.xrc
-------------- Build: Autosave in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler)---------------
Target is up to date.
Running target post-build steps
cmd /c if not exist devel\share\CodeBlocks mkdir devel\share\CodeBlocks
zip -jq9 devel\share\CodeBlocks\autosave.zip plugins\autosave\manifest.xml plugins\autosave\*.xrc
-------------- Build: Compiler depslib in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler)---------------
Target is up to date.
-------------- Build: Compiler in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler)---------------
Target is up to date.
Running target post-build steps
cmd /c if not exist devel\share\CodeBlocks mkdir devel\share\CodeBlocks
zip -jq9 devel\share\CodeBlocks\compiler.zip plugins\compilergcc\resources\manifest.xml plugins\compilergcc\resources\*.xrc
cmd /c "cd plugins\compilergcc\resources & zip -0 -q ..\..\..\devel\share\CodeBlocks\compiler.zip images\*.png images\16x16\*.png"
cmd /c if not exist devel\share\CodeBlocks\compilers mkdir devel\share\CodeBlocks\compilers
cmd /c xcopy /D /Y plugins\compilergcc\resources\compilers\*.* devel\share\CodeBlocks\compilers
0 File(s) copied
-------------- Build: Debugger in Code::Blocks wx2.8.x (compiler: GNU GCC Compiler)---------------
mingw32-g++.exe -Wall -g -pipe -mthreads -fmessage-length=0 -fexceptions -Winvalid-pch -Wno-unused-local-typedefs -std=gnu++11 -DHAVE_W32API_H -D__WXMSW__ -DWXUSINGDLL -DcbDEBUG -DCB_PRECOMP -DWX_PRECOMP -DwxUSE_UNICODE -DBUILDING_PLUGIN -Wno-deprecated-declarations -Wno-unused-local-typedefs -std=gnu++11 -iquote.objs\include -I.objs\include -I. -IC:\wxMSW-2.8.12\wxMSW-2.8.12\include -IC:\wxMSW-2.8.12\wxMSW-2.8.12\lib\gcc_dll\mswu -Isdk\wxscintilla\include -Isdk\wxpropgrid\include -Iinclude\tinyxml -IC:\MinGW\include -Iinclude -Iinclude\scripting\include -Iinclude\scripting\sqplus -IC:\wxMSW-2.8.12\wxMSW-2.8.12\lib\gcc_dll\mswud -IC:\MinGW\include -ID:\nebo\codeblocks_wit_extra_feature\src\sdk\wxscintilla\include -ID:\nebo\codeblocks_wit_extra_feature\src\include -ID:\nebo\codeblocks_wit_extra_feature\src\include\tinyxml -c D:\nebo\codeblocks_wit_extra_feature\src\plugins\debuggergdb\debuggergdb.cpp -o .objs\plugins\debuggergdb\debuggergdb.o
D:\nebo\codeblocks_wit_extra_feature\src\plugins\debuggergdb\debuggergdb.cpp: In member function 'void DebuggerGDB::DoBreak(bool)':
D:\nebo\codeblocks_wit_extra_feature\src\plugins\debuggergdb\debuggergdb.cpp:1607:17: error: 'CreateToolhelp32SnapshotFunc' was not declared in this scope
&& (CreateToolhelp32SnapshotFunc!=NULL)
^
D:\nebo\codeblocks_wit_extra_feature\src\plugins\debuggergdb\debuggergdb.cpp:1608:17: error: 'Process32FirstFunc' was not declared in this scope
&& (Process32FirstFunc!=NULL)
^
D:\nebo\codeblocks_wit_extra_feature\src\plugins\debuggergdb\debuggergdb.cpp:1609:17: error: 'Process32NextFunc' was not declared in this scope
&& (Process32NextFunc!=NULL) )
^
D:\nebo\codeblocks_wit_extra_feature\src\plugins\debuggergdb\debuggergdb.cpp:1611:56: error: 'TH32CS_SNAPALL' was not declared in this scope
HANDLE snap = CreateToolhelp32SnapshotFunc(TH32CS_SNAPALL,0);
^
D:\nebo\codeblocks_wit_extra_feature\src\plugins\debuggergdb\debuggergdb.cpp:1614:17: error: 'PROCESSENTRY32' was not declared in this scope
PROCESSENTRY32 lppe;
^
D:\nebo\codeblocks_wit_extra_feature\src\plugins\debuggergdb\debuggergdb.cpp:1615:17: error: 'lppe' was not declared in this scope
lppe.dwSize = sizeof(PROCESSENTRY32);
^
D:\nebo\codeblocks_wit_extra_feature\src\plugins\debuggergdb\debuggergdb.cpp:1635:18: error: 'DebugBreakProcessFunc' was not declared in this scope
if (!DebugBreakProcessFunc)
^
Process terminated with status 1 (0 minute(s), 8 second(s))
7 error(s), 0 warning(s) (0 minute(s), 8 second(s))
When I checked the declarations, It was already available in the same file (debuggergdb.cpp) as
#if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501)
#include "Tlhelp32.h"
typedef BOOL WINAPI (*DebugBreakProcessApiCall) (HANDLE);
typedef HANDLE WINAPI (*CreateToolhelp32SnapshotApiCall)(DWORD dwFlags, DWORD th32ProcessID);
typedef BOOL WINAPI (*Process32FirstApiCall) (HANDLE hSnapshot, LPPROCESSENTRY32W lppe);
typedef BOOL WINAPI (*Process32NextApiCall) (HANDLE hSnapshot, LPPROCESSENTRY32W lppe);
DebugBreakProcessApiCall DebugBreakProcessFunc = 0;
CreateToolhelp32SnapshotApiCall CreateToolhelp32SnapshotFunc = 0;
Process32FirstApiCall Process32FirstFunc = 0;
Process32NextApiCall Process32NextFunc = 0;
HINSTANCE kernelLib = 0;
#endif
I have already tried to change "TlHelp32.h" to "tlhelp32.h". But that also didn't work.
Now If I will remove these 2 lines,
#if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501)
#endif
it will build up finally.
Any reason for this strange behaviour.?
I am using MINGW Compiler 5.3.0. wxwidget2.8.12 Codeblocks trunk source code available at svn://svn.code.sf.net/p/codeblocks/code/trunk
OK, I never see this error.
It looks like you are using a MinGW based GCC compiler (Not MinGW-w64based). Maybe the value _WIN32_WINNT is not correctly defined.
You can use the Macro debugging tool to see what is it's value. See http://stackoverflow.com/a/10227059/154911 (http://stackoverflow.com/a/10227059/154911)
I can confirm the OP's error message during compilation of app.cpp. I'm pretty sure I narrowed the problem down:
- The missing types lie in %MINGW%\include\winnt.h, as noted before, but it is compiler dependend whether they are actually included:
MinGW (8.2.0): | | winnt.h#L3950 (https://sourceforge.net/p/mingw/mingw-org-wsl/ci/21762bb4a1bd0c88c38eead03f59e8d994349e83/tree/include/winnt.h#l3950) | | HEAP_INFORMATION_CLASS is only included if _WIN32_WINNT >= _WIN32_WINNT_WINXP // = 0x0501 |
MinGW-w64 (8.1.0): | | winnt.h#L7546 (https://sourceforge.net/p/mingw-w64/code/6638/tree/trunk/mingw-w64-headers/include/winnt.h#l7546) | | HEAP_INFORMATION_CLASS is included, does not depend on _WIN32_WINNT // not sure about that, I couldn't find any immediate dependeny! |
- In the Code::Blocks build, _WIN32_WINNT (and WINVER as well) was not set for build target src, it got a default value from %MINGW%\include\sdkddkver.h. That's bad because the default depends on the compiler:
MinGW (8.2.0): | | sdkddkver.h#L153 (https://sourceforge.net/p/mingw/mingw-org-wsl/ci/21762bb4a1bd0c88c38eead03f59e8d994349e83/tree/include/sdkddkver.h#l153) | | _WIN32_WINNT = _WIN32_WINNT_WIN2K; // = 0x0500 |
MinGW-w64 (8.1.0): | | sdkddkver.h#L161 (https://sourceforge.net/p/mingw-w64/code/6638/tree/trunk/mingw-w64-headers/include/sdkddkver.h#l161) | | WINVER = _WIN32_WINNT_WS03; // = 0x0502 |
MinGW users get a lower default for _WIN32_WINNT and run into the mentioned error. MinGW-w64 users get the higher default value (although that might not even matter) and probably never encounter it.
Solution for MinGW users:
Edit %MINGW%\include\sdkddkver.h#L153 to
# define _WIN32_WINNT _WIN32_WINNT_WIN7
and maybe ajust the warning a few lines above. Setting WINVER=0x0601 in Code::Blocks' compiler options lead to a lot of warnings for me.