Greets,
Attempting to recompile cryptoPP lead my shiny new gcc v. 4.0.1 to gag
in a number of places with annoying
"foo.cpp:NN: error: 'Bar::<anonymous enum>' is/uses anonymous type"
errors.
This happens with CryptoPP 5.2.1 as well as the CVS version of the c5
module I just checked out.
A quick fix you can run on the command line (in unix-like environments)
from within the source directory is:
$ for i in `grep -l 'enum {' *.h | sed -e 's/\.h//g'` ; \
do \
perl -pi -e \
"s/enum {/'enum en_$i' . int(rand(100)) .' {'/eg" $i.h; \
done
which replaces all the anonymous enums in file XYZ.h with
enum en_XYZNN {
where NN is a random number, eg "enum en_zdeflate34 {" in zdeflate.h.
This fixes compilation issues, up to getting a workable libcryptopp.a
that is (now it dies somewhere compiling dlltest.cpp with
"dlltest.cpp:198: error: expected constructor, destructor, or type
conversion before ‘(’ token" errors).
Also, I usually like to compile everything so it warns on everything and
treats warnings as errors (-Werror) but this is impossible right now
because I get a lot of
/path/to/cryptlib.h:352: warning: ‘class
CryptoPP::SimpleKeyingInterface’ has virtual functions but non-virtual
destructor
/path/to/cryptlib.h:663: warning: ‘class CryptoPP::Waitable’ has virtual
functions but non-virtual destructor
I thought to add some quick
virtual ~Waitable() {}
destructors but noticed that the class defs included
"CRYPTOPP_NO_VTABLE", e.g.:
class CRYPTOPP_NO_VTABLE Waitable { ... }
Seems under Linux this is just defined empty but I'm wondering why it's
there and whether adding my virtual destructors will have any negative
impact?
Any hints?
Thanks.
--
Pat Deegan,
http://www.psychogenic.com/
PGP: http://www.keyserver.net 0x32CBD168