Unable to compile a simple application

Do you have a question about makefiles, a compiler or IDE you are using and need to know how to set it up for wxWidgets or why it doesn't compile but other IDE's do ? Post your questions here.
Post Reply
srini2174
Earned a small fee
Earned a small fee
Posts: 15
Joined: Wed Nov 11, 2015 7:59 am

Unable to compile a simple application

Post by srini2174 »

Hi,

I am trying to compile a simple wxwidget application, but I get an undefined reference to undefined reference to `wxWindow::LoadNativeDialog(wxWindow*, int&).

Code: Select all

-- Build files have been written to: C:/Users/venkybal/VSCode-Workspaces/wxModular1/build
[6/12] C:\ProgramFiles\mingw64\bin\c++.exe  -DHAVE_wxModular1_wxNonGuiPluginBase -DSampleNonGuiPlugin_EXPORTS -DUNICODE -DWXUSINGDLL -D_DEBUG -D_UNICODE -D__WXDEBUG__ -DwxUSE_UNICODE_MSLU -I../modules/SampleNonGuiPlugin/src -I../modules/SampleNonGuiPlugin/include -Iinclude -I../src -I../include -I../modules/wxNonGuiPluginBase/include -isystem C:/wxWidgets/gcc71_x64/lib/gcc_dll/mswud -isystem C:/wxWidgets/gcc71_x64/include -g -MD -MT modules/SampleNonGuiPlugin/src/CMakeFiles/SampleNonGuiPlugin.dir/SampleNonGuiPluginExports.cpp.obj -MF modules\SampleNonGuiPlugin\src\CMakeFiles\SampleNonGuiPlugin.dir\SampleNonGuiPluginExports.cpp.obj.d -o modules/SampleNonGuiPlugin/src/CMakeFiles/SampleNonGuiPlugin.dir/SampleNonGuiPluginExports.cpp.obj -c ../modules/SampleNonGuiPlugin/src/SampleNonGuiPluginExports.cpp
[7/12] C:\ProgramFiles\mingw64\bin\c++.exe  -DDEMO_PLUGIN_EXPORTS -DHAVE_wxModular1_SampleNonGuiPlugin -DHAVE_wxModular1_wxNonGuiPluginBase -DUNICODE -DWXUSINGDLL -D_DEBUG -D_UNICODE -D__WXDEBUG__ -DwxModularCore_EXPORTS -DwxUSE_UNICODE_MSLU -I../modules/wxModularCore/src -I../modules/wxModularCore/include -Iinclude -I../src -I../include -I../modules/wxNonGuiPluginBase/include -I../modules/SampleNonGuiPlugin/include -isystem C:/wxWidgets/gcc71_x64/lib/gcc_dll/mswud -isystem C:/wxWidgets/gcc71_x64/include -g -MD -MT modules/wxModularCore/src/CMakeFiles/wxModularCore.dir/wxModularCoreSettings.cpp.obj -MF modules\wxModularCore\src\CMakeFiles\wxModularCore.dir\wxModularCoreSettings.cpp.obj.d -o modules/wxModularCore/src/CMakeFiles/wxModularCore.dir/wxModularCoreSettings.cpp.obj -c ../modules/wxModularCore/src/wxModularCoreSettings.cpp
[8/12] C:\ProgramFiles\mingw64\bin\c++.exe  -DDEMO_PLUGIN_EXPORTS -DUNICODE -DWXUSINGDLL -D_DEBUG -D_UNICODE -D__WXDEBUG__ -DwxNonGuiPluginBase_EXPORTS -DwxUSE_UNICODE_MSLU -I../modules/wxNonGuiPluginBase/src -I../modules/wxNonGuiPluginBase/include -Iinclude -I../src -I../include -isystem C:/wxWidgets/gcc71_x64/lib/gcc_dll/mswud -isystem C:/wxWidgets/gcc71_x64/include -g -MD -MT modules/wxNonGuiPluginBase/src/CMakeFiles/wxNonGuiPluginBase.dir/wxNonGuiPluginBase.cpp.obj -MF modules\wxNonGuiPluginBase\src\CMakeFiles\wxNonGuiPluginBase.dir\wxNonGuiPluginBase.cpp.obj.d -o modules/wxNonGuiPluginBase/src/CMakeFiles/wxNonGuiPluginBase.dir/wxNonGuiPluginBase.cpp.obj -c ../modules/wxNonGuiPluginBase/src/wxNonGuiPluginBase.cpp
[9/12] C:\ProgramFiles\mingw64\bin\c++.exe  -DHAVE_wxModular1_wxNonGuiPluginBase -DSampleNonGuiPlugin_EXPORTS -DUNICODE -DWXUSINGDLL -D_DEBUG -D_UNICODE -D__WXDEBUG__ -DwxUSE_UNICODE_MSLU -I../modules/SampleNonGuiPlugin/src -I../modules/SampleNonGuiPlugin/include -Iinclude -I../src -I../include -I../modules/wxNonGuiPluginBase/include -isystem C:/wxWidgets/gcc71_x64/lib/gcc_dll/mswud -isystem C:/wxWidgets/gcc71_x64/include -g -MD -MT modules/SampleNonGuiPlugin/src/CMakeFiles/SampleNonGuiPlugin.dir/SampleNonGuiPlugin.cpp.obj -MF modules\SampleNonGuiPlugin\src\CMakeFiles\SampleNonGuiPlugin.dir\SampleNonGuiPlugin.cpp.obj.d -o modules/SampleNonGuiPlugin/src/CMakeFiles/SampleNonGuiPlugin.dir/SampleNonGuiPlugin.cpp.obj -c ../modules/SampleNonGuiPlugin/src/SampleNonGuiPlugin.cpp
[9/12] C:\ProgramFiles\mingw64\bin\c++.exe  -DDEMO_PLUGIN_EXPORTS -DHAVE_wxModular1_SampleNonGuiPlugin -DHAVE_wxModular1_wxNonGuiPluginBase -DUNICODE -DWXUSINGDLL -D_DEBUG -D_UNICODE -D__WXDEBUG__ -DwxModularCore_EXPORTS -DwxUSE_UNICODE_MSLU -I../modules/wxModularCore/src -I../modules/wxModularCore/include -Iinclude -I../src -I../include -I../modules/wxNonGuiPluginBase/include -I../modules/SampleNonGuiPlugin/include -isystem C:/wxWidgets/gcc71_x64/lib/gcc_dll/mswud -isystem C:/wxWidgets/gcc71_x64/include -g -MD -MT modules/wxModularCore/src/CMakeFiles/wxModularCore.dir/wxModularCore.cpp.obj -MF modules\wxModularCore\src\CMakeFiles\wxModularCore.dir\wxModularCore.cpp.obj.d -o modules/wxModularCore/src/CMakeFiles/wxModularCore.dir/wxModularCore.cpp.obj -c ../modules/wxModularCore/src/wxModularCore.cpp
[10/12] C:\ProgramFiles\mingw64\bin\c++.exe  -DHAVE_wxModular1_SampleNonGuiPlugin -DHAVE_wxModular1_wxModularCore -DHAVE_wxModular1_wxNonGuiPluginBase -DUNICODE -DWXUSINGDLL -D_DEBUG -D_UNICODE -D__WXDEBUG__ -DwxUSE_UNICODE_MSLU -I../modules/wxModularApplication/src -I../modules/wxModularApplication/include -Iinclude -I../src -I../include -I../modules/wxNonGuiPluginBase/include -I../modules/SampleNonGuiPlugin/include -I../modules/wxModularCore/include -isystem C:/wxWidgets/gcc71_x64/lib/gcc_dll/mswud -isystem C:/wxWidgets/gcc71_x64/include -g -MD -MT modules/wxModularApplication/src/CMakeFiles/wxModularApplication.dir/SampleModularCore.cpp.obj -MF modules\wxModularApplication\src\CMakeFiles\wxModularApplication.dir\SampleModularCore.cpp.obj.d -o modules/wxModularApplication/src/CMakeFiles/wxModularApplication.dir/SampleModularCore.cpp.obj -c ../modules/wxModularApplication/src/SampleModularCore.cpp
[10/12] cmd.exe /C "cd . && C:\ProgramFiles\mingw64\bin\c++.exe  -g   -shared -o bin\libwxNonGuiPluginBase.dll -Wl,--out-implib,lib\libwxNonGuiPluginBase.dll.a -Wl,--major-image-version,0,--minor-image-version,0 modules/wxNonGuiPluginBase/src/CMakeFiles/wxNonGuiPluginBase.dir/wxNonGuiPluginBase.cpp.obj  C:/wxWidgets/gcc71_x64/lib/gcc_dll/libwxmsw31ud_core.a C:/wxWidgets/gcc71_x64/lib/gcc_dll/libwxbase31ud.a C:/wxWidgets/gcc71_x64/lib/gcc_dll/libwxpngd.a C:/wxWidgets/gcc71_x64/lib/gcc_dll/libwxtiffd.a C:/wxWidgets/gcc71_x64/lib/gcc_dll/libwxjpegd.a C:/wxWidgets/gcc71_x64/lib/gcc_dll/libwxzlibd.a C:/wxWidgets/gcc71_x64/lib/gcc_dll/libwxregexud.a C:/wxWidgets/gcc71_x64/lib/gcc_dll/libwxexpatd.a -lwinmm -lcomctl32 -loleacc -lrpcrt4 -lshlwapi -lversion -lwsock32 -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
FAILED: bin/libwxNonGuiPluginBase.dll lib/libwxNonGuiPluginBase.dll.a 
cmd.exe /C "cd . && C:\ProgramFiles\mingw64\bin\c++.exe  -g   -shared -o bin\libwxNonGuiPluginBase.dll -Wl,--out-implib,lib\libwxNonGuiPluginBase.dll.a -Wl,--major-image-version,0,--minor-image-version,0 modules/wxNonGuiPluginBase/src/CMakeFiles/wxNonGuiPluginBase.dir/wxNonGuiPluginBase.cpp.obj  C:/wxWidgets/gcc71_x64/lib/gcc_dll/libwxmsw31ud_core.a C:/wxWidgets/gcc71_x64/lib/gcc_dll/libwxbase31ud.a C:/wxWidgets/gcc71_x64/lib/gcc_dll/libwxpngd.a C:/wxWidgets/gcc71_x64/lib/gcc_dll/libwxtiffd.a C:/wxWidgets/gcc71_x64/lib/gcc_dll/libwxjpegd.a C:/wxWidgets/gcc71_x64/lib/gcc_dll/libwxzlibd.a C:/wxWidgets/gcc71_x64/lib/gcc_dll/libwxregexud.a C:/wxWidgets/gcc71_x64/lib/gcc_dll/libwxexpatd.a -lwinmm -lcomctl32 -loleacc -lrpcrt4 -lshlwapi -lversion -lwsock32 -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
modules/wxNonGuiPluginBase/src/CMakeFiles/wxNonGuiPluginBase.dir/wxNonGuiPluginBase.cpp.obj:wxNonGuiPluginBase.cpp:(.rdata$_ZTV20wxMDIParentFrameBase[_ZTV20wxMDIParentFrameBase]+0x5a8): undefined reference to `wxWindow::LoadNativeDialog(wxWindow*, int&)'
modules/wxNonGuiPluginBase/src/CMakeFiles/wxNonGuiPluginBase.dir/wxNonGuiPluginBase.cpp.obj:wxNonGuiPluginBase.cpp:(.rdata$_ZTV21wxMDIClientWindowBase[_ZTV21wxMDIClientWindowBase]+0x5a8): undefined reference to `wxWindow::LoadNativeDialog(wxWindow*, int&)'
collect2.exe: error: ld returned 1 exit status
*** Failure: Exit code 1 ***

I am using wxwidgets 3.1.0 on a widows 10 machine. I have compiled wxwidgets & the application with mingw-gcc 5.4 64bit gcc compiler. Any help in resolving this would be highly appreciated. Thanks in advance.
ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 7480
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

Re: Unable to compile a simple application

Post by ONEEYEMAN »

Hi,
Are you able to compile and run the 'minimal' sample provided with the library?

Thank you.
srini2174
Earned a small fee
Earned a small fee
Posts: 15
Joined: Wed Nov 11, 2015 7:59 am

Re: Unable to compile a simple application

Post by srini2174 »

Hi,
Yes. I am able to compile the minimal sample application but used the makefile which was provided along with it. In this example I am trying to use CMAKE to compile the sample. When I do this all the files are compiled correctly, but I get the error in the linking step. I am attaching the workspace I am using for reference.

The cmake modules in the config directory are from https://github.com/cmake-basis/modules
and the example which I have used are from https://github.com/T-Rex/wxModularApp


I always get the linker error
undefined reference to `wxWindow::LoadNativeDialog(wxWindow*, int&)'

Srinivasan.B
Attachments
wxModular1.zip
(331.23 KiB) Downloaded 81 times
stahta01
Ultimate wxWidgets Guru
Ultimate wxWidgets Guru
Posts: 550
Joined: Fri Nov 03, 2006 2:00 pm

Re: Unable to compile a simple application

Post by stahta01 »

https://github.com/T-Rex/wxModularApp does not look like a good sample to use.

Tim S.
stahta01
Ultimate wxWidgets Guru
Ultimate wxWidgets Guru
Posts: 550
Joined: Fri Nov 03, 2006 2:00 pm

Re: Unable to compile a simple application

Post by stahta01 »

From where did you get the mingw-gcc 5.4 64bit gcc compiler?

Tim S.
ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 7480
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

Re: Unable to compile a simple application

Post by ONEEYEMAN »

Hi,
If "minimal" sample compiles and runs correctly, then just use the minimal Makefile to compile the sample.
CMake unfortunately is still WIP.

Thank you.
srini2174
Earned a small fee
Earned a small fee
Posts: 15
Joined: Wed Nov 11, 2015 7:59 am

Re: Unable to compile a simple application

Post by srini2174 »

Hi,

I can use the makefile which is used for compiling the minimal sample. But I want to build a modular application. In the workspace I attached earlier if I change the library type to STATIC then the workspace compiles successfully. But when I change the type to SHARED library I get the link errors.

Thanks in advance for any help

Srinivasan.B
Attachments
wxModular1.zip
(321.06 KiB) Downloaded 176 times
ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 7480
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

Re: Unable to compile a simple application

Post by ONEEYEMAN »

Hi,
What errors did you receive?
I don't need to see the project - just the errors exactly as they appears in the build log.

Thank you.
srini2174
Earned a small fee
Earned a small fee
Posts: 15
Joined: Wed Nov 11, 2015 7:59 am

Re: Unable to compile a simple application

Post by srini2174 »

It is exactly the same error which I had posted earlier. I am posting it once again for reference

Code: Select all

23:56:16: Running steps for project wxModular1...
23:56:16: Starting: "C:\ProgramFiles\CMake\bin\cmake.exe" --build . --target all
C:\ProgramFiles\CMake\bin\cmake.exe -HC:\Users\venkybal\VSCode-Workspaces\wxModular1 -BC:\Users\venkybal\VSCode-Workspaces\wxModular1\build --check-build-system CMakeFiles\Makefile.cmake 0
C:\ProgramFiles\CMake\bin\cmake.exe -E cmake_progress_start C:\Users\venkybal\VSCode-Workspaces\wxModular1\build\CMakeFiles C:\Users\venkybal\VSCode-Workspaces\wxModular1\build\CMakeFiles\progress.marks
C:/ProgramFiles/mingw64/bin/mingw32-make.exe -f CMakeFiles\Makefile2 all
mingw32-make.exe[1]: Entering directory 'C:/Users/venkybal/VSCode-Workspaces/wxModular1/build'
C:/ProgramFiles/mingw64/bin/mingw32-make.exe -f modules\wxNonGuiPluginBase\src\CMakeFiles\wxNonGuiPluginBase.dir\build.make modules/wxNonGuiPluginBase/src/CMakeFiles/wxNonGuiPluginBase.dir/depend
mingw32-make.exe[2]: Entering directory 'C:/Users/venkybal/VSCode-Workspaces/wxModular1/build'
C:\ProgramFiles\CMake\bin\cmake.exe -E cmake_depends "MinGW Makefiles" C:\Users\venkybal\VSCode-Workspaces\wxModular1 C:\Users\venkybal\VSCode-Workspaces\wxModular1\modules\wxNonGuiPluginBase\src C:\Users\venkybal\VSCode-Workspaces\wxModular1\build C:\Users\venkybal\VSCode-Workspaces\wxModular1\build\modules\wxNonGuiPluginBase\src C:\Users\venkybal\VSCode-Workspaces\wxModular1\build\modules\wxNonGuiPluginBase\src\CMakeFiles\wxNonGuiPluginBase.dir\DependInfo.cmake --color=
mingw32-make.exe[2]: Leaving directory 'C:/Users/venkybal/VSCode-Workspaces/wxModular1/build'
C:/ProgramFiles/mingw64/bin/mingw32-make.exe -f modules\wxNonGuiPluginBase\src\CMakeFiles\wxNonGuiPluginBase.dir\build.make modules/wxNonGuiPluginBase/src/CMakeFiles/wxNonGuiPluginBase.dir/build
mingw32-make.exe[2]: Entering directory 'C:/Users/venkybal/VSCode-Workspaces/wxModular1/build'
[  8%] Linking CXX shared library ..\..\..\bin\libwxNonGuiPluginBase.dll
cd /d C:\Users\venkybal\VSCode-Workspaces\wxModular1\build\modules\wxNonGuiPluginBase\src && C:\ProgramFiles\CMake\bin\cmake.exe -E cmake_link_script CMakeFiles\wxNonGuiPluginBase.dir\link.txt --verbose=1
C:\ProgramFiles\CMake\bin\cmake.exe -E remove -f CMakeFiles\wxNonGuiPluginBase.dir/objects.a
C:\ProgramFiles\mingw64\bin\ar.exe cr CMakeFiles\wxNonGuiPluginBase.dir/objects.a @CMakeFiles\wxNonGuiPluginBase.dir\objects1.rsp
C:\ProgramFiles\mingw64\bin\g++.exe  -O3 -DNDEBUG  -shared -o ..\..\..\bin\libwxNonGuiPluginBase.dll -Wl,--out-implib,..\..\..\lib\libwxNonGuiPluginBase.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -Wl,--whole-archive CMakeFiles\wxNonGuiPluginBase.dir/objects.a -Wl,--no-whole-archive @CMakeFiles\wxNonGuiPluginBase.dir\linklibs.rsp
CMakeFiles\wxNonGuiPluginBase.dir/objects.a(wxNonGuiPluginBase.cpp.obj):wxNonGuiPluginBase.cpp:(.rdata$_ZTV20wxMDIParentFrameBase[_ZTV20wxMDIParentFrameBase]+0x5a8): undefined reference to `wxWindow::LoadNativeDialog(wxWindow*, int&)'
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[2]: *** [modules\wxNonGuiPluginBase\src\CMakeFiles\wxNonGuiPluginBase.dir\build.make:108: bin/libwxNonGuiPluginBase.dll] Error 1
mingw32-make.exe[2]: Leaving directory 'C:/Users/venkybal/VSCode-Workspaces/wxModular1/build'
mingw32-make.exe[1]: *** [CMakeFiles\Makefile2:1034: modules/wxNonGuiPluginBase/src/CMakeFiles/wxNonGuiPluginBase.dir/all] Error 2
mingw32-make.exe[1]: Leaving directory 'C:/Users/venkybal/VSCode-Workspaces/wxModular1/build'
mingw32-make.exe: *** [Makefile:154: all] Error 2
23:56:16: The process "C:\ProgramFiles\CMake\bin\cmake.exe" exited with code 2.
Error while building/deploying project wxModular1 (kit: Imported Kit)
When executing step "CMake Build"
23:56:16: Elapsed time: 00:01.
ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 7480
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

Re: Unable to compile a simple application

Post by ONEEYEMAN »

Hi,
I don't see where do you link the wx libraries.
As I said - CMake is WIP unfortunately.

You can try to check out CMake configuration in the Git HEAD for minimal sample and do something similar or in the meantime install CodeBlocks and try to compile your project with it.
The other possibility is to install MSVC free edition as it will be much simpler - everything is already ready for you.

Thank you.
srini2174
Earned a small fee
Earned a small fee
Posts: 15
Joined: Wed Nov 11, 2015 7:59 am

Re: Unable to compile a simple application

Post by srini2174 »

Hi,

I did a recompilation of the whole wxwidgets using cmake. After doing this I was able to compile the application with mingw 64 bit compiler.

I also compiled a version of wxwidgets with VS 2017 version. When I try to recompile the same application with VS2017 I get the following error.

Code: Select all

Execute cmake with arguments: --build,c:/users/venkybal/vscode-workspaces/wxmodular1/build,--target,all,--config,Debug,--,-j,6
[vscode] Executing command: C:\ProgramFiles\CMake\bin\cmake.exe --build c:/users/venkybal/vscode-workspaces/wxmodular1/build --target all --config Debug -- -j 6
[1/3  33%] Linking CXX shared library bin\wxNonGuiPluginBase.dll
FAILED: bin/wxNonGuiPluginBase.dll lib/wxNonGuiPluginBase.lib 
cmd.exe /C "cmd.exe /C "C:\ProgramFiles\CMake\bin\cmake.exe -E __create_def C:\Users\venkybal\VSCode-Workspaces\wxModular1\build\modules\wxNonGuiPluginBase\src\CMakeFiles\wxNonGuiPluginBase.dir\exports.def C:\Users\venkybal\VSCode-Workspaces\wxModular1\build\modules\wxNonGuiPluginBase\src\CMakeFiles\wxNonGuiPluginBase.dir\exports.def.objs && cd c:\users\venkybal\vscode-workspaces\wxmodular1\build" && C:\ProgramFiles\CMake\bin\cmake.exe -E vs_link_dll --intdir=modules\wxNonGuiPluginBase\src\CMakeFiles\wxNonGuiPluginBase.dir --manifests  -- link.exe /nologo modules\wxNonGuiPluginBase\src\CMakeFiles\wxNonGuiPluginBase.dir\wxNonGuiPluginBase.cpp.obj  /out:bin\wxNonGuiPluginBase.dll /implib:lib\wxNonGuiPluginBase.lib /pdb:bin\wxNonGuiPluginBase.pdb /dll /version:0.0 /machine:x64 /debug /INCREMENTAL  /DEF:modules\wxNonGuiPluginBase\src\CMakeFiles\wxNonGuiPluginBase.dir\exports.def  C:\ProgramFiles\wxWidgets\vc15_x64\lib\vc_x64_dll\wxmsw31ud_core.lib C:\ProgramFiles\wxWidgets\vc15_x64\lib\vc_x64_dll\wxbase31ud.lib winmm.lib comctl32.lib oleacc.lib rpcrt4.lib shlwapi.lib version.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib  && cd ."
   Creating library lib\wxNonGuiPluginBase.lib and object lib\wxNonGuiPluginBase.exp
wxNonGuiPluginBase.cpp.obj : error LNK2001: unresolved external symbol "private: static class wxClassInfo * wxClassInfo::sm_first" (?sm_first@wxClassInfo@@0PEAV1@EA)
wxNonGuiPluginBase.cpp.obj : error LNK2001: unresolved external symbol "public: static class wxClassInfo wxObject::ms_classInfo" (?ms_classInfo@wxObject@@2VwxClassInfo@@A)
bin\wxNonGuiPluginBase.dll : fatal error LNK1120: 2 unresolved externals
LINK Pass 1 failed. with 1120
Srinivasan.B
Post Reply