I've been trying to compile a project using Allegro 5 but getting "undefined reference to __cxa_guard_acquire" and "undefined reference to __cxa_guard_release" errors. I am using the allegro binaries from here: https://bitbucket.org/bugsquasher/unofficial-allegro-5-binaries/downloads/Allegro525_GCC81_MinGW_W64_i686_posix_dwarf.7z
and mingw gcc version 8.1.0 (i686-posix-dwarf-rev0, Built by MinGW-W64 project)
using codeblocks. Any ideas?
Any ideas?
Hate to give the obvious danky allegro.cc answer but, don't use codeblocks. 🤷♂️
I'm actually curious, though, what features specifically do you like about CodeBlocks?
Codeblocks is great dude. Don't listen to him.
Which compiler did you download? Does it match the binaries? It looks like you have the right one.
Are you compiling as C++? Allegro is C++ on Windows.
I've only tried one or two ides and settled with codeblocks. There is no specific reason I use it. The output from gcc -v is_
Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=C:/MINGW/i686-8.1.0-release-posix-dwarf-rt_v6-rev0/mingw32/bin/../libexec/gcc/i686-w64-mingw32/8.1.0/lto-wrapper.exe Target: i686-w64-mingw32 Configured with: ../../../src/gcc-8.1.0/configure --host=i686-w64-mingw32 --build=i686-w64-mingw32 --target=i686-w64-mingw32 --prefix=/mingw32 --with-sysroot=/c/mingw810/i686-810-posix-dwarf-rt_v6-rev0/mingw32 --enable-shared --enable-static --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-sjlj-exceptions --with-dwarf2 --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=i686 --with-tune=generic --with-libiconv --with-system-zlib --with-gmp=/c/mingw810/prerequisites/i686-w64-mingw32-static --with-mpfr=/c/mingw810/prerequisites/i686-w64-mingw32-static --with-mpc=/c/mingw810/prerequisites/i686-w64-mingw32-static --with-isl=/c/mingw810/prerequisites/i686-w64-mingw32-static --with-pkgversion='i686-posix-dwarf-rev0, Built by MinGW-W64 project' --with-bugurl=https://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -fno-ident -I/c/mingw810/i686-810-posix-dwarf-rt_v6-rev0/mingw32/opt/include -I/c/mingw810/prerequisites/i686-zlib-static/include -I/c/mingw810/prerequisites/i686-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -fno-ident -I/c/mingw810/i686-810-posix-dwarf-rt_v6-rev0/mingw32/opt/include -I/c/mingw810/prerequisites/i686-zlib-static/include -I/c/mingw810/prerequisites/i686-w64-mingw32-static/include' CPPFLAGS=' -I/c/mingw810/i686-810-posix-dwarf-rt_v6-rev0/mingw32/opt/include -I/c/mingw810/prerequisites/i686-zlib-static/include -I/c/mingw810/prerequisites/i686-w64-mingw32-static/include' LDFLAGS='-pipe -fno-ident -L/c/mingw810/i686-810-posix-dwarf-rt_v6-rev0/mingw32/opt/lib -L/c/mingw810/prerequisites/i686-zlib-static/lib -L/c/mingw810/prerequisites/i686-w64-mingw32-static/lib -Wl,--large-address-aware' Thread model: posix gcc version 8.1.0 (i686-posix-dwarf-rev0, Built by MinGW-W64 project)
I'm coding in C, is Allegro only C++ on Windows? That would limit its usability in my opinion. If the problem is the compiler, do you have a link to the correct one? There are several on the download page.
You can code in C all you want, but on Windows you have to compile any Allegro program as C++ due to the D3D driver being C++. It's really not a problem.
After playing with it a bit, I coded it in C++. The error is gone. Should I hate MINGW or Microsoft for forcing me to learn a new language?
Don't need to learn a new language. Stick to C. Just compile in C++.
However, it never hurts to expand your knowledge.
Unless it's my compiler, C++ seems stricter. I had a warning in some code when using the C compiler but it was an error for the C++ compiler.
However, it never hurts to expand your knowledge.
You kids with your fancy new languages. What's wrong with BASIC?