Abdelrazak Younes <[EMAIL PROTECTED]> writes: | > | Index: support/unicode.C | > | =================================================================== | > | --- support/unicode.C (revision 14662) | > | +++ support/unicode.C (working copy) | > | @@ -16,6 +16,10 @@ | > | | #include "debug.h" | > | | +#include <boost/cstdint.hpp> | > | + | > | +#include <iconv.h> | > | + | > | #include <cerrno> | > | #include <iomanip> | > | #include <string> | > | @@ -45,7 +49,7 @@ | > | } | > | } | > | | - char * inbuf = const_cast<char *>(&buf[0]); | > | + char const * inbuf = const_cast<char *>(&buf[0]); | > And what is the point of the const_cast then? | > IMO this should not be const. | | line59: | size_t res = iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); | | MSVC tells me that it cannot convert inbuf from "char *" to "const char *"
But that is just bullocks. Converting non-const to const is always possible, it is the opposite that is not ok. You are sure there are not a '**' somewhere in the error message? What prototype does iconf have on win? | > | size_t inbytesleft = buf.size(); | > | char out[1000] = { 0 }; | > | char * outbuf = out; | > | @@ -108,7 +112,7 @@ | > | { | > | //lyxerr << "Outbuf =" << std::hex; | > | | - std::vector<uint32_t> ucs4; | > | + std::vector<boost::uint32_t> ucs4; | > So, the win compiler has a problem with lookup, | | No, I think uint32_t is also defined in the global namespace and | that's what gcc uses here. So I guess you'd better explicitly specify | boost::. Hmm... that should only be used if stdint/inttypes has been included (and c++ used in C99 compaiblity mode) | > but please add a | > 'using' statement instead. | > using boost::uint32_t; | | If you want but you are using boost::uint32_t just two lines before. Hmm... ok... boost::uint32_t it is then. -- Lgb