From: Warren Young Date: December 22 2006 2:21pm Subject: Re: error C2065: 'ulong' : undeclared identifier List-Archive: http://lists.mysql.com/plusplus/6216 Message-Id: <458BE9CE.2090902@etr-usa.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Matt Dargavel wrote: > > It looks like ulong is defined in my_global.h, and according to the MySQL > docs http://dev.mysql.com/doc/refman/4.1/en/windows-client-compiling.html > you need to include my_global.h before mysql.h on Windows. Unfortunately, > if you do that you get a lot of errors about types etc already being > defined. That's about as far as I've got with the issue... Yes, this is a mess. Problem 1: my_global.h isn't C++-aware. Aside from the min/max stuff you've discovered, there are additional crocks in here, like "#define bool BOOL" in the Windows case. Ptui! Problem 2: If you pull in my_global.h, you also get my_config.h, which is an autoconf config.h file, but these aren't supposed to be used outside the project's build system. Two autoconf config.h files will conflict, as with MySQL++'s config.h. Problem 3: Once you work around all that, you find that they've changed some linkage setting in MySQL 5.0. It feels like an RTL difference to me....we used to get this a lot back in the 1.7.x days when MySQL++ shipped building against one of the less common RTL versions by default, so it'd conflict with other stuff. The solution to the first two is to ignore the MySQL manual. It'll be simpler to emulate what we need from my_global.h than to work around the messes it creates. (We're already doing this, such as with the longlong typedefs.) I've checked in several such changes...the ulong and min/max problems are fixed now, for whatever good it may do. Despite knowing what the solution to #3 probably is, I've run out of willpower. I don't use MySQL++ on Windows myself, and the reasonable way to attack the problem is to dig into the MySQL build system, which I really don't want to do. Here, Matt, have this nice hot potato.