[cffi-devel] Paging VC++ gurus, or "C++ errors are soooo scrutable" <sigh>
Kenny Tilton
ktilton at nyc.rr.com
Thu Oct 13 22:18:23 UTC 2005
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
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: STRING.H
URL: <https://mailman.common-lisp.net/pipermail/cffi-devel/attachments/20051013/533cb121/attachment.ksh>
More information about the cffi-devel
mailing list