On Dec 11, 2008, at 4:54 AM, soryu Jeong wrote:
> lib/null.h:174: error: `mysqlpp::Null<Type, Behavior>::data' has
> incomplete
> type
> lib/stadapter.h:44: error: forward declaration of `struct
> mysqlpp::String'
The compiler is wrong to demand access to all the type information at
this point. It's possible for it to delay the full template
instantiation until the point of use, which is not in stadapter.h.
> Is MySQL++ not support FreeBSD 5.2.1 or gcc 3.3.3 ?
In the release notes for FreeBSD 5.3, it says they upgraded GCC from a
prerelease version of 3.3.3 to a prerelease version of 3.4.2. Why
they're shipping beta compilers in an OS that prides itself on
stability is beyond me, but, the main point is that this compilation
bug may be due to the incompleteness of 3.3.3. We regularly build
MySQL++ on older versions of GCC successfully, so this must be a
temporary bug.
Further scanning of the release notes shows that they didn't upgrade
the compiler again during the 5.x series, so I'm guessing their 3.4.2
variant didn't cause any new problems. They began shipping the
official 3.4.4 version with FreeBSD 6.0.
> what can I do for compile it ?
If it were me, I'd try one of these things, in this order of preference:
- upgrade to a later 5.x version of FreeBSD -- you probably want this
for security reasons anyway
- upgrade GCC to one from a newer FreeBSD, since the one you have is
clearly broken
- appease the compiler, sprinkling #include <mystring.h> around the
MySQL++ code until the error goes away; start with stadapter.h
- build MySQL++ on another machine that generates binary-compatible
libraries, copy the library over, and hope this lets you build your
program against it successfully
- build everything on another machine, and just copy over binaries
If you try one of the first two, let us know what you upgraded to that
fixed it. We need to document this in the MySQL++ FAQ.