According to this post, the reason of linking error " Undefined reference to 'vtable for XXXX' " is due to some of the virtual function is not written. Especial from the inherent one.
But with Code::Blocks, there is another possibility that could leads the problem. After some research, I discovered a quick to fix the problem, especially the problem is not cause from you but the library.
Code::blocks in Linux may automatically call some program to get config. For example: run following on the terminal:
$wx-config --libs
-L/usr/local/lib -pthread -lwx_gtk2u_xrc-2.9 -lwx_gtk2u_html-2.9 -lwx_gtk2u_qa-2.9 -lwx_gtk2u_adv-2.9 -lwx_gtk2u_core-2.9 -lwx_baseu_xml-2.9 -lwx_baseu_net-2.9 -lwx_baseu-2.9
This is a result from my computer. According to 'wx-config --help', the default output of this parameter is the basic, standard of the linkers. In other word, some special library is not included.
Instead using 'wx-config --libs', you may try following:
$wx-cinfig --libs all
-L/usr/local/lib -pthread -lwx_gtk2u_xrc-2.9 -lwx_gtk2u_stc-2.9 -lwx_gtk2u_richtext-2.9 -lwx_gtk2u_ribbon-2.9 -lwx_gtk2u_propgrid-2.9 -lwx_gtk2u_aui-2.9 -lwx_gtk2u_media-2.9 -lwx_gtk2u_html-2.9 -lwx_gtk2u_qa-2.9 -lwx_gtk2u_adv-2.9 -lwx_gtk2u_core-2.9 -lwx_baseu_xml-2.9 -lwx_baseu_net-2.9 -lwx_baseu-2.9
Soon you may discovered that the number of the linker has increased. This is the main reason that cause you mad.
To modify the setting, goto project properties... → Project build options → Linker Setting → Other linker options.
Change 'wx-config --libs' to 'wx-cinfig --libs all', and re-compile the project.
沒有留言:
張貼留言