Timothy Reaves wrote:
/sw/lib/odcctools/bin/ld: multiple definitions of symbol (anonymous
namespace)::ucs4_codeset
support/.libs/libsupport.a(unicode.o) definition of (anonymous
namespace)::ucs4_codeset in section (__DATA,__data)
support/.libs/libsupport.a(docstream.o) definition of (anonymous
namespace)::ucs4_codeset in section (__DATA,__data)
This is again the non invisible anonymous namespace bitting you. What
version of gcc do you have? Or maybe it is a linker issue?
Anyway, this simple patch will solve it. Any objection Georg? Or would
you prefer to reuse the ones defined in unicode.C?
Abdel.
Index: docstream.C
===================================================================
--- docstream.C (revision 15352)
+++ docstream.C (working copy)
@@ -20,9 +20,9 @@
namespace {
#ifdef WORDS_BIGENDIAN
-char const * ucs4_codeset = "UCS-4BE";
+char const * ucs4_iconv_codeset = "UCS-4BE";
#else
-char const * ucs4_codeset = "UCS-4LE";
+char const * ucs4_iconv_codeset = "UCS-4LE";
#endif
char const * utf8_codeset = "UTF-8";
@@ -53,7 +53,7 @@
: base(refs)
{
if (inout & std::ios_base::in) {
- in_cd_ = iconv_open(ucs4_codeset, utf8_codeset);
+ in_cd_ = iconv_open(ucs4_iconv_codeset, utf8_codeset);
if (in_cd_ == (iconv_t)(-1)) {
fprintf(stderr, "Error %d returned from
iconv_open(in_cd_): %s\n",
errno, strerror(errno));
@@ -63,7 +63,7 @@
} else
in_cd_ = (iconv_t)(-1);
if (inout & std::ios_base::out) {
- out_cd_ = iconv_open(utf8_codeset, ucs4_codeset);
+ out_cd_ = iconv_open(utf8_codeset, ucs4_iconv_codeset);
if (out_cd_ == (iconv_t)(-1)) {
fprintf(stderr, "Error %d returned from
iconv_open(out_cd_): %s\n",
errno, strerror(errno));