Linking error with locale symbols

Andrej Mitrovic andrej.mitrovich at gmail.com
Fri Sep 7 13:58:02 PDT 2012


I'm having linking errors on win32 for a couple of static members in C++ stdlib.

Here's a C++ test file:
http://codepad.org/0cbnzent

C++ driver:
http://codepad.org/A5Cs5gGd

$ g++ -c -m32 localeTest.cpp
$ g++ -m32 driver.cpp localeTest.o -lstdc++

Linking works. Now a D driver:
http://codepad.org/LEoNUOXG

$ g++ -c -m32 localeTest.cpp
$ gdc -m32 driver.d localeTest.o -lstdc++

I get an LD error:
localeTest.o:localeTest.cpp:(.text$_ZN3Foo4testEv[__ZN3Foo4testEv]+0x20):
undefined reference to `std::locale::facet::_S_lc_ctype_c_locale(int*,
char const*)'
collect2: ld returned 1 exit status

Another symbol I've tried that gives me linking errors via GDC is:
`std::basic_istream<wchar_t, std::char_traits<wchar_t> >::ignore(int,
unsigned short)'

Here's what g++ -v says: http://pastebin.com/5sdGB34s
And gdc -v: http://pastebin.com/BqWtzRMY

Maybe gdc is configured differently from g++ and g++ links in
something gdc doesn't? I can't see much difference in verbose output
except the "-Bstatic/-Bdynamic" in g++ output which are VxWorks
options, but they don't make a difference here.


More information about the D.gnu mailing list