Duft Markus wrote:
OMG, i'm so blind...... I messed up 12d and 15d, maybe those should get other
names ;o) now it's all clear why it can't work....
Yes, container iterators have different types between debug and
optimized builds, with std::string and std::vector being plain
pointers for efficiency. This makes the two kinds of builds
incompatible with one another.
Anyway thanks for your time, and sorry for messing around in here!
No problem. Glad you got it worked out.
Martin
PS I haven't played with wgcc too much yet but I like the concept.
In fact, I've been thinking about writing a similar tool for some
time, one that would provide a uniform interface to all compilers
(i.e., the same set of compiler options across all). Have you
considered enhancing wgcc in this way?
Cheers, Markus
-----Ursprüngliche Nachricht-----
Von: Duft Markus [mailto:[EMAIL PROTECTED]
Gesendet: Dienstag, 19. September 2006 09:37
An: [email protected]
Betreff: AW: boost ?!
Hm, the struct thing was completely wrong, sorry....
Ok, i just digged a little into this:
For example one of the unresolved symbols is:
[EMAIL PROTECTED]@[EMAIL PROTECTED]@std@@[EMAIL PROTECTED]@2@@std@@QAEPADXZ
Which would be:
__declspec(dllimport) public: char * __thiscall std::basic_string<char,struct
std::char_traits<char>,class std::allocator<char> >::begin(void)
The Stdcxx library has symbols some symbols which are close:
[EMAIL PROTECTED]@[EMAIL PROTECTED]@std@@[EMAIL PROTECTED]@2@@std@@[EMAIL
PROTECTED]@[EMAIL PROTECTED]@std@@[EMAIL PROTECTED]@2@@std@@[EMAIL
PROTECTED]@@XZ
Which would be:
__imp_public: class __rw::__rw_debug_iter<class std::basic_string<char,struct std::char_traits<char>,class
std::allocator<char> >,char *,char *> __thiscall std::basic_string<char,struct
std::char_traits<char>,class std::allocator<char> >::begin(void)
I now think that somehow there is a problem with the headers thinking they need
to compile debug iterators (in build 15d!?) and when using the lib, they think
something else ;o// i looked at my config.h but there was nothing i could see
in there. I attached it, maybe you can see something.
Cheers, Markus
-----Ursprüngliche Nachricht-----
Von: Martin Sebor [mailto:[EMAIL PROTECTED]
Gesendet: Montag, 18. September 2006 17:34
An: [email protected]
Betreff: Re: boost ?!
Duft Markus wrote:
Hey again!
I'm currently fighting to get boost compiled with stdcxx... ;o) It
seems, that boost uses both char and wchar_t versions of methods from
stdcxx, which at least seems to compile, but cannot link, since there
is no wchar_t impl in the stdlib15d.lib/.dll. Now my question is: can
i somehow use 15d and 15D together on windows, so that both kind of
symbols are present?
The difference between 15d and 15D is that the first is a 32-bit build type (ILP32) while
the second is a 64-bit or wide one (LLP64 on Windows). The "wide" has nothing
to do with wchar_t, it refers to the width of the data type(s).
Stdcxx has full support for wchar_t as long as the compiler supports it. Keep
in mind that the MSVC /Zc:wchar_t option changes the type and mangling of
wchar_t and thus is a binary incompatible option.
Programs that link with the library must be compiled with same setting of the
option as the library (i.e., both on or both off).
See http://msdn2.microsoft.com/en-us/library/dh8che7s.aspx
And there seem to be some differences from windows STL to this one in
which files get included automatically from other includes and so on,
since i need to explicitly include some files for some things to work
(like std::hex and std::dec are not found, except i include istream or
so....)
Stdcxx is much less promiscuous (i.e., a lot cleaner) than other implementations of
the C++ standard library when it comes to its headers introducing unnecessary names
into scope. std::hex and other manipulators are required to be declared in the header
<ios> and nowhere else so in order to use them you must include that header.
Martin