From: Kenny Tilton
Subject: Paging VC++ gurus, or "C++ errors are soooo scrutable" <sigh>
Date: 
Message-ID: <434EDD2F.8040204@nyc.rr.com>
This is a multi-part message in MIME format.
--------------010904020701050702080005
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Recent discussion of wxCL had me wondering if Verrazano (vzn) could 
swallow wxWidgets. Here is the current state of the binding definition:

(defbinding "wxWidgets-library"
    (nicknames "wx")
  (flags "-D__STDC__=0 -D__VISUALC__=1 -DWIN32 -D_DEBUG -D_CONSOLE 
-D_MBCS -I\\wxWidgets\\include -I\\wxWidgets\\lib\\vc_dll\\msw")
  (include "wx/wx.h"))

[note to vzn cognoscenti: no, this will not produce any bindings until 
we get the new vzn which will have the option of binding recursively, 
but it fails the same way as when all the wx headers are listed so it 
will serve until I get a clean run.]

[Aside: Bug report, probably obsolete: that long flags line causes an 
error from gccxml if broken across multiple lines. I say "obsolete" 
because the next release of vzn will make defbinding into a macro and 
the Lisp reader will be doing the parsing. Anywho...]

Now wxWidgets is fine. I can build in VC++6 a wx demo such as Life 
without a problem. I have even created a VC++6 project for the 
intermediate vzntemp.cpp and /that/ compiles OK. What I learned along 
the way is to take the VC++ project options which produce a successful 
build (in this case:)

/nologo /MLd /W3 /Gm /GX /ZI /Od /I "\wxwidgets\include" /I 
"\wxwidgets\lib\vc_dll\msw" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D 
"_MBCS" /FR"Debug/" /Fp"Debug/vzntemp.pch" /YX /Fo"Debug/" /Fd"Debug/" 
/FD /GZ /c

...and do my damnedest to recreate that in the flags option. This got me 
as far as a bunch of STRDUP undefined errors, which should bring no 
small delight to Frank <g>, but a little digging in stdio.h suggested to 
me the additional define of __STDC__=0 would fix things, and it did 
nicely. (Ha! <g>) Apparently strdup is deprecated with extreme 
prejudice. Anyway, now I am down to this:

In file included from /wxWidgets/include/wx/memory.h:20,
                 from /wxWidgets/include/wx/object.h:25,
                 from /wxWidgets/include/wx/wx.h:16,
                 from C:/program files/acl70/vzntemp.cpp:1:
/wxWidgets/include/wx/string.h:237: error: syntax error before `void'
/wxWidgets/include/wx/string.h:242: error: semicolon missing after 
declaration
   of `wxStringData'
/wxWidgets/include/wx/string.h:242: error: ISO C++ forbids defining types
   within return type
/wxWidgets/include/wx/string.h:242: error: two or more data types in
   declaration of `Validate'
/wxWidgets/include/wx/string.h:242: error: semicolon missing after 
declaration
   of `struct wxStringData'
/wxWidgets/include/wx/string.h: In function `int Validate(bool)':
/wxWidgets/include/wx/string.h:242: error: `nRefs' undeclared (first use 
this
   function)
/wxWidgets/include/wx/string.h:242: error: (Each undeclared identifier is
   reported only once for each function it appears in.)
/wxWidgets/include/wx/string.h: At global scope:
/wxWidgets/include/wx/string.h:243: error: non-member function `bool 
IsValid()'
   cannot have `const' method qualifier
/wxWidgets/include/wx/string.h:244: error: syntax error before `}' token
/wxWidgets/include/wx/string.h: In member function `void 
wxStringBase::Reinit()
   ':
/wxWidgets/include/wx/string.h:268: error: `Unlock' undeclared (first 
use this
   function)
/wxWidgets/include/wx/string.h: In copy constructor `
   wxStringBase::wxStringBase(const wxStringBase&)':
/wxWidgets/include/wx/string.h:308: error: `IsValid' undeclared (first 
use this
   function)
/wxWidgets/include/wx/string.h: In constructor `
   wxStringBase::wxStringBase(const wxStringBase&, unsigned int, 
unsigned int)
   ':
/wxWidgets/include/wx/string.h:333: error: `IsValid' undeclared (first 
use this
   function)
/wxWidgets/include/wx/string.h: In destructor 
`wxStringBase::~wxStringBase()':
/wxWidgets/include/wx/string.h:351: error: `Unlock' undeclared (first 
use this
   function)
/wxWidgets/include/wx/string.h: In member function `wxStringBase&
   wxStringBase::insert(unsigned int, const wxStringBase&)':
/wxWidgets/include/wx/string.h:443: error: `IsValid' undeclared (first 
use this
   function)
/wxWidgets/include/wx/string.h: In member function `wxStringBase&
   wxStringBase::insert(unsigned int, const wxStringBase&, unsigned int,
   unsigned int)':
/wxWidgets/include/wx/string.h:449: error: `IsValid' undeclared (first 
use this
   function)
/wxWidgets/include/wx/string.h: In member function `wxString&
   wxString::operator<<(const wxString&)':
/wxWidgets/include/wx/string.h:885: error: `IsValid' undeclared (first 
use this
   function)
In file included from /wxWidgets/include/wx/window.h:1352,
                 from /wxWidgets/include/wx/app.h:23,
                 from /wxWidgets/include/wx/wx.h:24,
                 from C:/program files/acl70/vzntemp.cpp:1:
/wxWidgets/include/wx/msw/window.h: At global scope:
/wxWidgets/include/wx/msw/window.h:54: error: class `wxWindow' is 
implicitly
   friends with itself

Looking at string.h, well, "syntax error before void"? <sigh>

Any idea what flag I must be missing to get that? Two things I will be 
exploring:

-- Is this a vzn known limitation in any way? ie, something on the to-do 
list?
-- Do any of those project options translate to a define I have to add, 
a la __STDC__=0? I worked that one out by reading string.h, but "error 
before void"  is not quite as helpful as "strdup undefined".

Thx for even wild guesses at this point.

-- 
Kenny

Why Lisp? http://wiki.alu.org/RtL_Highlight_Film

"I've wrestled with reality for 35 years, Doctor, and I'm happy to state I finally won out over it."
    Elwood P. Dowd, "Harvey", 1950


--------------010904020701050702080005
Content-Type: text/plain;
 name="STRING.H"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="STRING.H"

/***
*string.h - declarations for string manipulation functions
*
*       Copyright (c) 1985-1997, Microsoft Corporation. All rights reserved.
*
*Purpose:
*       This file contains the function declarations for the string
*       manipulation functions.
*       [ANSI/System V]
*
*       [Public]
*
****/

#if     _MSC_VER > 1000
#pragma once
#endif

#ifndef _INC_STRING
#define _INC_STRING

#if     !defined(_WIN32) && !defined(_MAC)
#error ERROR: Only Mac or Win32 targets supported!
#endif


#ifdef  __cplusplus
extern "C" {
#endif



/* Define _CRTIMP */

#ifndef _CRTIMP
#ifdef  _DLL
#define _CRTIMP __declspec(dllimport)
#else   /* ndef _DLL */
#define _CRTIMP
#endif  /* _DLL */
#endif  /* _CRTIMP */

/* Define __cdecl for non-Microsoft compilers */

#if     ( !defined(_MSC_VER) && !defined(__cdecl) )
#define __cdecl
#endif

/* Define _CRTAPI1 (for compatibility with the NT SDK) */

#ifndef _CRTAPI1
#if	_MSC_VER >= 800 && _M_IX86 >= 300
#define _CRTAPI1 __cdecl
#else
#define _CRTAPI1
#endif
#endif


#ifndef _SIZE_T_DEFINED
typedef unsigned int size_t;
#define _SIZE_T_DEFINED
#endif


#ifndef _MAC
#ifndef _WCHAR_T_DEFINED
typedef unsigned short wchar_t;
#define _WCHAR_T_DEFINED
#endif
#endif  /* ndef _MAC */

#ifndef _NLSCMP_DEFINED
#define _NLSCMPERROR    2147483647  /* currently == INT_MAX */
#define _NLSCMP_DEFINED
#endif

/* Define NULL pointer value */

#ifndef NULL
#ifdef __cplusplus
#define NULL    0
#else
#define NULL    ((void *)0)
#endif
#endif


/* Function prototypes */

#ifdef  _M_MRX000
_CRTIMP void *  __cdecl memcpy(void *, const void *, size_t);
_CRTIMP int     __cdecl memcmp(const void *, const void *, size_t);
_CRTIMP void *  __cdecl memset(void *, int, size_t);
_CRTIMP char *  __cdecl _strset(char *, int);
_CRTIMP char *  __cdecl strcpy(char *, const char *);
_CRTIMP char *  __cdecl strcat(char *, const char *);
_CRTIMP int     __cdecl strcmp(const char *, const char *);
_CRTIMP size_t  __cdecl strlen(const char *);
#else
        void *  __cdecl memcpy(void *, const void *, size_t);
        int     __cdecl memcmp(const void *, const void *, size_t);
        void *  __cdecl memset(void *, int, size_t);
        char *  __cdecl _strset(char *, int);
        char *  __cdecl strcpy(char *, const char *);
        char *  __cdecl strcat(char *, const char *);
        int     __cdecl strcmp(const char *, const char *);
        size_t  __cdecl strlen(const char *);
#endif
_CRTIMP void *  __cdecl _memccpy(void *, const void *, int, unsigned int);
_CRTIMP void *  __cdecl memchr(const void *, int, size_t);
_CRTIMP int     __cdecl _memicmp(const void *, const void *, unsigned int);

#ifdef  _M_ALPHA
        /* memmove is available as an intrinsic in the Alpha compiler */
        void *  __cdecl memmove(void *, const void *, size_t);
#else
_CRTIMP void *  __cdecl memmove(void *, const void *, size_t);
#endif


_CRTIMP char *  __cdecl strchr(const char *, int);
_CRTIMP int     __cdecl _strcmpi(const char *, const char *);
_CRTIMP int     __cdecl _stricmp(const char *, const char *);
_CRTIMP int     __cdecl strcoll(const char *, const char *);
_CRTIMP int     __cdecl _stricoll(const char *, const char *);
_CRTIMP int     __cdecl _strncoll(const char *, const char *, size_t);
_CRTIMP int     __cdecl _strnicoll(const char *, const char *, size_t);
_CRTIMP size_t  __cdecl strcspn(const char *, const char *);
_CRTIMP char *  __cdecl _strdup(const char *);
_CRTIMP char *  __cdecl _strerror(const char *);
_CRTIMP char *  __cdecl strerror(int);
_CRTIMP char *  __cdecl _strlwr(char *);
_CRTIMP char *  __cdecl strncat(char *, const char *, size_t);
_CRTIMP int     __cdecl strncmp(const char *, const char *, size_t);
_CRTIMP int     __cdecl _strnicmp(const char *, const char *, size_t);
_CRTIMP char *  __cdecl strncpy(char *, const char *, size_t);
_CRTIMP char *  __cdecl _strnset(char *, int, size_t);
_CRTIMP char *  __cdecl strpbrk(const char *, const char *);
_CRTIMP char *  __cdecl strrchr(const char *, int);
_CRTIMP char *  __cdecl _strrev(char *);
_CRTIMP size_t  __cdecl strspn(const char *, const char *);
_CRTIMP char *  __cdecl strstr(const char *, const char *);
_CRTIMP char *  __cdecl strtok(char *, const char *);
_CRTIMP char *  __cdecl _strupr(char *);
_CRTIMP size_t  __cdecl strxfrm (char *, const char *, size_t);

#ifdef  _MAC
unsigned char * __cdecl _c2pstr(char *);
char * __cdecl _p2cstr(unsigned char *);

#if     !__STDC__
__inline unsigned char * __cdecl c2pstr(char *sz) { return _c2pstr(sz);};
__inline char * __cdecl p2cstr(unsigned char *sz) { return _p2cstr(sz);};
#endif
#endif

#if     !__STDC__

/* prototypes for oldnames.lib functions */
_CRTIMP void * __cdecl memccpy(void *, const void *, int, unsigned int);
_CRTIMP int __cdecl memicmp(const void *, const void *, unsigned int);
_CRTIMP int __cdecl strcmpi(const char *, const char *);
_CRTIMP int __cdecl stricmp(const char *, const char *);
_CRTIMP char * __cdecl strdup(const char *);
_CRTIMP char * __cdecl strlwr(char *);
_CRTIMP int __cdecl strnicmp(const char *, const char *, size_t);
_CRTIMP char * __cdecl strnset(char *, int, size_t);
_CRTIMP char * __cdecl strrev(char *);
        char * __cdecl strset(char *, int);
_CRTIMP char * __cdecl strupr(char *);

#endif  /* !__STDC__ */


#ifndef _MAC
#ifndef _WSTRING_DEFINED

/* wide function prototypes, also declared in wchar.h  */

_CRTIMP wchar_t * __cdecl wcscat(wchar_t *, const wchar_t *);
_CRTIMP wchar_t * __cdecl wcschr(const wchar_t *, wchar_t);
_CRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *);
_CRTIMP wchar_t * __cdecl wcscpy(wchar_t *, const wchar_t *);
_CRTIMP size_t __cdecl wcscspn(const wchar_t *, const wchar_t *);
_CRTIMP size_t __cdecl wcslen(const wchar_t *);
_CRTIMP wchar_t * __cdecl wcsncat(wchar_t *, const wchar_t *, size_t);
_CRTIMP int __cdecl wcsncmp(const wchar_t *, const wchar_t *, size_t);
_CRTIMP wchar_t * __cdecl wcsncpy(wchar_t *, const wchar_t *, size_t);
_CRTIMP wchar_t * __cdecl wcspbrk(const wchar_t *, const wchar_t *);
_CRTIMP wchar_t * __cdecl wcsrchr(const wchar_t *, wchar_t);
_CRTIMP size_t __cdecl wcsspn(const wchar_t *, const wchar_t *);
_CRTIMP wchar_t * __cdecl wcsstr(const wchar_t *, const wchar_t *);
_CRTIMP wchar_t * __cdecl wcstok(wchar_t *, const wchar_t *);

_CRTIMP wchar_t * __cdecl _wcsdup(const wchar_t *);
_CRTIMP int __cdecl _wcsicmp(const wchar_t *, const wchar_t *);
_CRTIMP int __cdecl _wcsnicmp(const wchar_t *, const wchar_t *, size_t);
_CRTIMP wchar_t * __cdecl _wcsnset(wchar_t *, wchar_t, size_t);
_CRTIMP wchar_t * __cdecl _wcsrev(wchar_t *);
_CRTIMP wchar_t * __cdecl _wcsset(wchar_t *, wchar_t);

_CRTIMP wchar_t * __cdecl _wcslwr(wchar_t *);
_CRTIMP wchar_t * __cdecl _wcsupr(wchar_t *);
_CRTIMP size_t __cdecl wcsxfrm(wchar_t *, const wchar_t *, size_t);
_CRTIMP int __cdecl wcscoll(const wchar_t *, const wchar_t *);
_CRTIMP int __cdecl _wcsicoll(const wchar_t *, const wchar_t *);
_CRTIMP int __cdecl _wcsncoll(const wchar_t *, const wchar_t *, size_t);
_CRTIMP int __cdecl _wcsnicoll(const wchar_t *, const wchar_t *, size_t);

#if     !__STDC__

/* old names */
#define wcswcs wcsstr

/* prototypes for oldnames.lib functions */
_CRTIMP wchar_t * __cdecl wcsdup(const wchar_t *);
_CRTIMP int __cdecl wcsicmp(const wchar_t *, const wchar_t *);
_CRTIMP int __cdecl wcsnicmp(const wchar_t *, const wchar_t *, size_t);
_CRTIMP wchar_t * __cdecl wcsnset(wchar_t *, wchar_t, size_t);
_CRTIMP wchar_t * __cdecl wcsrev(wchar_t *);
_CRTIMP wchar_t * __cdecl wcsset(wchar_t *, wchar_t);
_CRTIMP wchar_t * __cdecl wcslwr(wchar_t *);
_CRTIMP wchar_t * __cdecl wcsupr(wchar_t *);
_CRTIMP int __cdecl wcsicoll(const wchar_t *, const wchar_t *);

#endif  /* !__STDC__ */

#define _WSTRING_DEFINED
#endif

#endif  /* ndef _MAC */

#ifdef  __cplusplus
}
#endif

#endif  /* _INC_STRING */

--------------010904020701050702080005--

From: Kaz Kylheku
Subject: Re: Paging VC++ gurus, or "C++ errors are soooo scrutable" <sigh>
Date: 
Message-ID: <1129245044.817360.75370@f14g2000cwb.googlegroups.com>
Kenny Tilton wrote:

> /***
> *string.h - declarations for string manipulation functions
> *
> *       Copyright (c) 1985-1997, Microsoft Corporation. All rights reserved.

That is the wrong string.h. The problem is in the wxWidgets string.h,
not in the C library one.

I'm looking at it in their CVS tree. The relevant section is:

//
---------------------------------------------------------------------------
// string data prepended with some housekeeping info (used by wxString
class),
// is never used directly (but had to be put here to allow inlining)
//
---------------------------------------------------------------------------

struct WXDLLIMPEXP_BASE wxStringData
{
  int     nRefs;        // reference count
  size_t  nDataLength,  // actual string length
          nAllocLength; // allocated memory size

  // mimics declaration 'wxChar data[nAllocLength]'
  wxChar* data() const { return (wxChar*)(this + 1); }

  // empty string has a special ref count so it's never deleted
  bool  IsEmpty()   const { return (nRefs == -1); }
  bool  IsShared()  const { return (nRefs > 1);   }

  // lock/unlock
  void  Lock()   { if ( !IsEmpty() ) nRefs++;                    }

  // VC++ will refuse to inline Unlock but profiling shows that it is
wrong
#if defined(__VISUALC__) && (__VISUALC__ >= 1200)
  __forceinline
#endif
  // VC++ free must take place in same DLL as allocation when using non
dll
  // run-time library (e.g. Multithreaded instead of Multithreaded DLL)
#if defined(__VISUALC__) && defined(_MT) && !defined(_DLL)
  void  Unlock() { if ( !IsEmpty() && --nRefs == 0) Free();  }
  // we must not inline deallocation since allocation is not inlined
  void  Free();
#else
  void  Unlock() { if ( !IsEmpty() && --nRefs == 0) free(this);  }
#endif

  // if we had taken control over string memory (GetWriteBuf), it's
  // intentionally put in invalid state
  void  Validate(bool b)  { nRefs = (b ? 1 : 0); }
  bool  IsValid() const   { return (nRefs != 0); }
};




Assuming this is the same file you have, what could be wrong? Perhaps
the WXDLLIMPEXP_BASE has the wrong value for the toolchain you are
using. This is supposed to expand to __dllimport or __dllexport under
the Microsoft compiler, which is a language extension that exists for
the sake of making and using C++ library DLL's. This will cause a
syntax error unless it's set to blank.

The errors suggest that the compiler has become confused and isn't
recognizing that IsValid() is being defined within a class! The nRefs
member appears undefined. That suggests that the compiler wasn't able
to grok the class declaration at all; and tried to recover by
continuing to read the source code at file scope.
From: Kenny Tilton
Subject: Re: Paging VC++ gurus, or "C++ errors are soooo scrutable" <sigh>
Date: 
Message-ID: <I7E3f.564$h25.97@news-wrt-01.rdc-nyc.rr.com>
Kaz Kylheku wrote:
> Kenny Tilton wrote:
> 
> 
>>/***
>>*string.h - declarations for string manipulation functions
>>*
>>*       Copyright (c) 1985-1997, Microsoft Corporation. All rights reserved.
> 
> 
> That is the wrong string.h. The problem is in the wxWidgets string.h,
> not in the C library one.

Sorry, I had the C one on my mind after sorting out the strdup issue. 
But it looks like you found the same wx/string.h I have. Thx for the effort.

> 
> I'm looking at it in their CVS tree. The relevant section is:
> 
> //
> ---------------------------------------------------------------------------
> // string data prepended with some housekeeping info (used by wxString
> class),
> // is never used directly (but had to be put here to allow inlining)
> //
> ---------------------------------------------------------------------------
> 
> struct WXDLLIMPEXP_BASE wxStringData
> {
>   int     nRefs;        // reference count
>   size_t  nDataLength,  // actual string length
>           nAllocLength; // allocated memory size
> 
>   // mimics declaration 'wxChar data[nAllocLength]'
>   wxChar* data() const { return (wxChar*)(this + 1); }
> 
>   // empty string has a special ref count so it's never deleted
>   bool  IsEmpty()   const { return (nRefs == -1); }
>   bool  IsShared()  const { return (nRefs > 1);   }
> 
>   // lock/unlock
>   void  Lock()   { if ( !IsEmpty() ) nRefs++;                    }
> 
>   // VC++ will refuse to inline Unlock but profiling shows that it is
> wrong
> #if defined(__VISUALC__) && (__VISUALC__ >= 1200)
>   __forceinline
> #endif
>   // VC++ free must take place in same DLL as allocation when using non
> dll
>   // run-time library (e.g. Multithreaded instead of Multithreaded DLL)
> #if defined(__VISUALC__) && defined(_MT) && !defined(_DLL)
>   void  Unlock() { if ( !IsEmpty() && --nRefs == 0) Free();  }
>   // we must not inline deallocation since allocation is not inlined
>   void  Free();
> #else
>   void  Unlock() { if ( !IsEmpty() && --nRefs == 0) free(this);  }
> #endif
> 
>   // if we had taken control over string memory (GetWriteBuf), it's
>   // intentionally put in invalid state
>   void  Validate(bool b)  { nRefs = (b ? 1 : 0); }
>   bool  IsValid() const   { return (nRefs != 0); }
> };
> 
> 
> 
> 
> Assuming this is the same file you have, what could be wrong? Perhaps
> the WXDLLIMPEXP_BASE has the wrong value for the toolchain you are
> using. This is supposed to expand to __dllimport or __dllexport under
> the Microsoft compiler, which is a language extension that exists for
> the sake of making and using C++ library DLL's. This will cause a
> syntax error unless it's set to blank.

Good call. Messing with those defines cleared a couple of errors. But 
the weird thing is I can tell gccxml to behave like msvc6 and get the 
same errors, as if it were emulating that by default.

I'll slide over to gccxml and see what I can see.

Any VZN fans on a *nix want to try, well, just the gccxml command will 
produce the errors:

gccxml -D__STDC__=0 -I\wxwidgets\include -I\wxwidgets\lib\vc_lib\msw 
-fxml=vzn.xml vzntemp.cpp

where vzntemp.cpp is:

...........
#include "wx/wx.h"
const int __verrazano_binding = 1;
...........

Hmmm. Mebbe I should try a different setup.h than the one found in MSW.

<sigh> Good thing C++ is standard and portable like Common Lisp! <\sigh>

-- 
Kenny

Why Lisp? http://wiki.alu.org/RtL_Highlight_Film

"I've wrestled with reality for 35 years, Doctor, and I'm happy to state 
I finally won out over it."
     Elwood P. Dowd, "Harvey", 1950
From: Frank Buss
Subject: Re: Paging VC++ gurus, or "C++ errors are soooo scrutable" <sigh>
Date: 
Message-ID: <nrgeputesd4t$.v9gl6splc1pu$.dlg@40tude.net>
Kenny Tilton wrote:

> Thx for even wild guesses at this point.

try to reorder the include statements in your vzntemp.cpp. Take a look at
the Life example, which you've managed to compile.

-- 
Frank Bu�, ··@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
From: Kaz Kylheku
Subject: Re: Paging VC++ gurus, or "C++ errors are soooo scrutable" <sigh>
Date: 
Message-ID: <1129245408.023395.27270@g49g2000cwa.googlegroups.com>
Frank Buss wrote:
> Kenny Tilton wrote:
>
> > Thx for even wild guesses at this point.
>
> try to reorder the include statements in your vzntemp.cpp. Take a look at
> the Life example, which you've managed to compile.

He compiled that with Microsoft VC++ 6.   These errors are GNU C++.

:)
From: Kenny Tilton
Subject: Re: Paging VC++ gurus, or "C++ errors are soooo scrutable" <sigh>
Date: 
Message-ID: <5uC3f.539$h25.521@news-wrt-01.rdc-nyc.rr.com>
Kaz Kylheku wrote:
> Frank Buss wrote:
> 
>>Kenny Tilton wrote:
>>
>>
>>>Thx for even wild guesses at this point.
>>
>>try to reorder the include statements in your vzntemp.cpp. Take a look at
>>the Life example, which you've managed to compile.
> 
> 
> He compiled that with Microsoft VC++ 6.   These errors are GNU C++.
> 
> :)
> 

Thx for the other post, I will stare at that. As for this, I guess you 
must be right since it /is/ called GCCXML. :) But I found I could make 
it find things by placing them in the VC++/VC98/Include directory. Maybe 
the GCCXML folks set things up to look there when they did the win32 
port? Which reminds me, I should ask the GCCXML folks as well. Doh!

Thx.

ps. Life.cpp included just wx.h and then one more wx include.


-- 
Kenny

Why Lisp? http://wiki.alu.org/RtL_Highlight_Film

"I've wrestled with reality for 35 years, Doctor, and I'm happy to state 
I finally won out over it."
     Elwood P. Dowd, "Harvey", 1950
From: Kaz Kylheku
Subject: Re: Paging VC++ gurus, or "C++ errors are soooo scrutable" <sigh>
Date: 
Message-ID: <1129305953.544587.189060@g44g2000cwa.googlegroups.com>
Kenny Tilton wrote:
> Kaz Kylheku wrote:
> > Frank Buss wrote:
> >
> >>Kenny Tilton wrote:
> >>
> >>
> >>>Thx for even wild guesses at this point.
> >>
> >>try to reorder the include statements in your vzntemp.cpp. Take a look at
> >>the Life example, which you've managed to compile.
> >
> >
> > He compiled that with Microsoft VC++ 6.   These errors are GNU C++.
> >
> > :)
> >
>
> Thx for the other post, I will stare at that. As for this, I guess you
> must be right since it /is/ called GCCXML. :)

WTF is that? Some GCC-based build system that reads VC++6 XML project
files?
From: Brian Downing
Subject: Re: Paging VC++ gurus, or "C++ errors are soooo scrutable" <sigh>
Date: 
Message-ID: <NwS3f.486817$xm3.44586@attbi_s21>
In article <························@g44g2000cwa.googlegroups.com>,
Kaz Kylheku <········@gmail.com> wrote:
> WTF is that? Some GCC-based build system that reads VC++6 XML project
> files?

http://www.justfuckinggoogleit.com/search?q=GCCXML

It's GCC hacked up to produce XML output, so that you can use that XML
to interface with C++ without actually having to understand C++ syntax.

-bcd
-- 
*** Brian Downing <bdowning at lavos dot net> 
From: Kenny Tilton
Subject: Re: Paging VC++ gurus, or "C++ errors are soooo scrutable" <sigh>
Date: 
Message-ID: <hrT3f.614$h25.364@news-wrt-01.rdc-nyc.rr.com>
Kaz Kylheku wrote:
>>Thx for the other post, I will stare at that. As for this, I guess you
>>must be right since it /is/ called GCCXML. :)
> 
> 
> WTF is that? Some GCC-based build system that reads VC++6 XML project
> files?
> 

Some info here: http://common-lisp.net/project/fetter/


-- 
Kenny

Why Lisp? http://wiki.alu.org/RtL_Highlight_Film

"I've wrestled with reality for 35 years, Doctor, and I'm happy to state 
I finally won out over it."
     Elwood P. Dowd, "Harvey", 1950
From: Frank Buss
Subject: Re: Paging VC++ gurus, or "C++ errors are soooo scrutable" <sigh>
Date: 
Message-ID: <ma8tgrb4zlhj$.isv80lem7au8$.dlg@40tude.net>
Kaz Kylheku wrote:

> He compiled that with Microsoft VC++ 6.   These errors are GNU C++.

thanks, now I see why it might be more difficult than just compile another
file :-)

BTW: the GCCXML page says that it can emulate Visual C++ 7.1. Does this
mean it can parse all VC++ 7.1 features? The FAQ says no templates, but
does it support attributed ATL and all the other COM language extensions,
too? This may be useful when creating bindings for COM(+) and ActiveX
controls.

-- 
Frank Bu�, ··@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de