@sdaau wrote:
I use CodeBlocks 12.11, but at the moment, I replaced its toolchain executables (compiler) to refer to
mingw-w64\i686-4.9.3-posix-dwarf-rt_v4-rev1\mingw32, which is to say,g++version 4.9.3. Otherwise, I also use agit-bash.exeshell. I tried the following experiment:I looked at the (currently deprecated) page http://www.openframeworks.cc/nightlybuilds.html, and got the latest from there, 22 April 2015 Nightly version:
wget http://www.openframeworks.cc/versions/nightly/of_v20150422_win_cb_nightly.zip unzip of_v20150422_win_cb_nightly.zip ls of_v20150422_win_cb_release/scripts/win_cb/template/emptyExample.*Inside CodeBlocks, I open the
emptyExample.workspacelast listed, so the openFrameworks library can be automatically built on first build ofemptyExample. Before I can start building though, I must do this:mkdir -p of_v20150422_win_cb_release/libs/openFrameworksCompiled/project/win_cb/obj/Release/openFrameworks/{3d,app,communication,events,gl,graphics,math,sound,types,utils,video} mkdir -p of_v20150422_win_cb_release/scripts/win_cb/template/obj/Release/src... because CodeBlocks seemingly cannot create directories needed for object files, but instead it prefers to fail with "No such file or directory".
With this in place, I run Build for the
emptyExampleproject in CodeBlocks (in Release), which triggers the build of the openFrameworks library - which builds succesfully. ThenemptyExamplecontinues building - and it likewise compiles succesfully, - however, it does not link; I get a ton of linker errors like these:... Warning: .drectve `-defaultlib:LIBCMT ' unrecognized Warning: corrupt .drectve at end of def file Warning: .drectve `-defaultlib:LIBCMT ' unrecognized Warning: corrupt .drectve at end of def file Warning: .drectve `-defaultlib:LIBCMT ' unrecognized Warning: corrupt .drectve at end of def file Warning: .drectve `-defaultlib:LIBCMT ' unrecognized Warning: corrupt .drectve at end of def file Warning: .drectve `-defaultlib:LIBCMT ' unrecognized Warning: corrupt .drectve at end of def file Warning: .drectve `-defaultlib:LIBCMT ' unrecognized Warning: corrupt .drectve at end of def file Warning: .drectve `-defaultlib:uuid.lib ' unrecognized Warning: .drectve `-defaultlib:uuid.lib ' unrecognized Warning: .drectve `-defaultlib:LIBCMT ' unrecognized Warning: corrupt .drectve at end of def file ../../../libs/openFrameworksCompiled/lib/win_cb/openFrameworks.lib(ofAppRunner.o):ofAppRunner.cpp:(.text+0x33e): undefined reference to `_imp___ZN4Poco12ErrorHandlerC2Ev' ../../../libs/openFrameworksCompiled/lib/win_cb/openFrameworks.lib(ofAppRunner.o):ofAppRunner.cpp:(.text+0x34d): undefined reference to `_imp___ZN4Poco12ErrorHandler3setEPS0_' ../../../libs/openFrameworksCompiled/lib/win_cb/openFrameworks.lib(ofAppRunner.o):ofAppRunner.cpp:(.text+0x63e): undefined reference to `_imp___ZN4Poco12ErrorHandlerC2Ev' ../../../libs/openFrameworksCompiled/lib/win_cb/openFrameworks.lib(ofAppRunner.o):ofAppRunner.cpp:(.text+0x64d): undefined reference to `_imp___ZN4Poco12ErrorHandler3setEPS0_' ...Apparently, this has to do with symbols in the Poco library; here's a brief check:
$ nm of_v20150422_win_cb_release/libs/poco/lib/win_cb/libPocoFoundation.a | grep ErrorHandlerC2E 00000148 T __ZN4Poco12ErrorHandlerC2Ev $ nm of_v20150422_win_cb_release/libs/openFrameworksCompiled/project/win_cb/obj/Release/openFrameworks/app/ofAppRunner.o | grep ErrorHandlerC2E U __imp___ZN4Poco12ErrorHandlerC2Evor, in other words:
- the
ofAppRunner.oI just built, wants a symbol__imp___ZN4Poco12ErrorHandlerC2Ev- but,- the
libPocoFoundation.athat follows with OF offers "only" the__ZN4Poco12ErrorHandlerC2Evsymbol (i.e., not prefixed with__imp_)So - what would be the correct procedure, to build this example without the linking errors? Is it dependent on the g++ compiler version?
Posts: 1
Participants: 1