[wxMac 2.8.4, wxMSW ?] "Strange" Mac g++ compiler errors trying to
compile Windows compilable wx code
David L Goldsmith
David.L.Goldsmith at noaa.gov
Thu Jun 21 07:34:18 PDT 2007
Awesome - that must have been the wxString problem also?
DG
Eran Ifrah wrote:
> The problem is that you are using unicode version of wx and it using
> ANSI build.
> strData.c_str() will return wxChar which defined as wchar_t on unicode
> build.
>
> So, use any of the conversion functions available:
>
> for example, instead of using strData.c_str(), try strData.ToAscii()
>
> Eran
>
>
> On 6/21/07, *David Goldsmith* < David.L.Goldsmith at noaa.gov
> <mailto:David.L.Goldsmith at noaa.gov>> wrote:
>
> Hi, folks! I'm trying to compile some wx C++ code written by a
> colleague; I'm working late so can't consult him, but seeing as
> how he's
> primarily a Windows developer and the code in question compiles
> thereon,
> I'm not sure how much he'd be able to help me figure out why I'm
> having
> the problems I'm having trying to do it on a Mac w/ g++.
>
> The first "symptom" was the compiler complaining about an overloaded
> method ambiguity:
>
> "error: call of overloaded 'wxString(const char [33])' is ambiguous"
>
> Here's the problem line of code:
>
> wxMessageBox(wxString("Vertex data file was not opened."),
> wxT("Vertex File Reading Error Message"), wxOK |
> wxICON_ERROR);
>
> Again, I emphasize that AFAIK this compiles fine in Windows (he uses
> VC++, most current version, so what ever version of MicroSoft's C++
> compiler that implies...) I guessed correctly - at least as far as
> getting it to compile is concerned - that the fix was to replace
> wxString with wxT; there were multiple occurrences of this problem
> so I
> just replaced all occurrences of wxString( with wxT( and that
> fixed that.
>
> Then I ran into (multiple instances of) the following:
>
> error: cannot convert 'const wxChar*' to 'const char*' for
> argument '1'
> to 'int sscanf(const char*, const char*, ...)'
>
> Here's a sample problem line of code:
>
> if(sscanf(strData.c_str(),"%ld, %lf, %lf, %lf", &pointNumber,
> &longitude, &latitude, &depth) < 4)
>
> so sscanf wants argument 1 to be a const char* but the compiler thinks
> it's getting a const wxChar*; but isn't c_str() the method that
> returns
> the char* member of a wxChar object? In any event, I seems MS's
> compiler can deal w/ this but apparently g++ can't.
>
> My working hypothesis (which I can't check w/ my colleague 'til
> tomorrow) is that he's using an older version of wx - would that
> explain
> these problems? Or is it another instance of MS's compiler being too
> permissive and we need to write our code more strictly? If neither of
> these, what? (As I said, I'd say it's about a 50/50 chance that he'd
> know the origin of the discrepancy.)
>
> Thanks!
>
> DG
> --
> ERD/ORR/NOS/NOAA
> <http://response.restoration.noaa.gov/emergencyresponse/ >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: wx-users-unsubscribe at lists.wxwidgets.org
> <mailto:wx-users-unsubscribe at lists.wxwidgets.org>
> For additional commands, e-mail: wx-users-help at lists.wxwidgets.org
> <mailto:wx-users-help at lists.wxwidgets.org>
>
>
>
>
> --
> Eran Ifrah
> eran.ifrah at gmail.com <mailto:eran.ifrah at gmail.com>
--
ERD/ORR/NOS/NOAA <http://response.restoration.noaa.gov/emergencyresponse/>
More information about the wx-users
mailing list