[linux] Re: C-vraag (onder wx-widgets)

Julien Michielsen julien op michkloo.xs4all.nl
Za Feb 11 19:26:17 CET 2012


Voor degenen die bereid zijn hun borst nat te maken, en het koude
water in te duiken: de source en de foutmeldingen van de compilatie
kunnen worden opgehaald met
Voor de source:
wget http://michkloo.home.xs4all.nl/ui-source.jpg
vervolgens: mv ui-source.jpg ui-source.tgz en untar om dit
tar-bestand uit te pakken.
Voor de foutmeldingen:
wget http://michkloo.home.xs4all.nl/ui_errmsg.jpg
en bekijk ui_errmsg.jpg (een text-bestand) met less of een editor
naar keuze.

Nu verdergaand met de reactie van Daniel:

On 02/11/12 11:06, Daniel von Asmuth wrote:
> Aldus schreef Julien Michielsen op Sat, Feb 11, 2012 at 06:46:43AM +0100:
>> On 02/07/12 19:57, Daniel von Asmuth wrote:
>>> Aldus schreef Julien Michielsen op Tue, Feb 07, 2012 at 05:54:07PM +0100:
>>>> Ik heb een bridge-programma (kaartspel) dat het c-programma "gib"
>>>> als basis heeft, en daaromheen is onder X-widgets een interface naar
>>>> X geconstrueerd.
>>>> Mocht je ervaring hebben met wx-widgets, dan zou je mij mogelijk kunnen
>>>> helpen.  Is dat niet het geval, dan kun je mogelijk net zo goed stoppen
>>>> met lezen, omdat ik hierbeneden vragen stel die een zekere ervaring
>>>> op dit gebied verwachten.
>>>>
>> Nee, ik had ook niet verwacht dat je graag bridget, en dit programma
>> op je computer hebt staan. Maar dat is ook niet nodig, en niet belang-
>> rijk.  Rond het kernprogramma gib is een interface naar X geschreven,
>> die laat zien hoe het biedverloop gaat, en welke kaarten je nog in je hand
>> hebt.  Die interface is geschreven in C++, en maakt gebruik van x-widgets.
>> En daar wringt de schoen: reeds tijdens de compilatie rollen de fout-
>> meldingen over het scherm, zoals:
>> make
>> g++ -c -MMD -O2 -Wall
>> -I/usr/lib/wx-2.8-wxcontainer/wx/include/gtk2-unicode-release-2.8
>> -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__
>> -pthread -o gib.o gib.cpp
>> In file included from gib.cpp:46:0:
>> config.h:27:30: error: conversion from 'const char [6]' to 'const
>> wxString' is ambiguous
>> config.h:27:30: note: candidates are:
>> /usr/include/wx-2.8/wx/string.h:692:3: note: wxString::wxString(wxChar,
>> size_t)<near match>
>> /usr/include/wx-2.8/wx/string.h:692:3: note:   no known conversion for
>> argument 1 from 'const char [6]' to 'wxChar {aka wchar_t}'
>> /usr/include/wx-2.8/wx/string.h:682:3: note: wxString::wxString(int)
>> <near match>
>> /usr/include/wx-2.8/wx/string.h:682:3: note:   no known conversion for
>> argument 1 from 'const char [6]' to 'int'
>> config.h:144:31: error: call of overloaded 'wxString(const char [5])' is
>> ambiguous
>> config.h:144:31: note: candidates are:
>> /usr/include/wx-2.8/wx/string.h:722:3: note: wxString::wxString(const
>> wxWCharBuffer&)<near match>
>> /usr/include/wx-2.8/wx/string.h:722:3: note:   no known conversion for
>> argument 1 from 'const char [5]' to 'const wxWCharBuffer&'
> Het bovenstaande zegt dat de compiler een probleem heeft met regel 46
> van gib.cpp en daar citeert-ie een stapel .h files bij om zijn gelijk
> te bewijzen. Vermoedelijk is dit te repareren met een kleine aanpassing.
> Het is C++ en dat is een stukje trickier dan gewoon C.
>
Denk dat het toch een stukje dieper zit:
regel 46 van cpp bevat:
#include "config.h"
en is indirect een aanroep van deze header file.
Vervolgens komt de volgende foutmelding, wanneer de compiler
comfig.h ingaat, en regel 27, colom 30 bereikt. Daar staat:
const wxString  APP_VERSION =   "6.1.3";
en blijkbaar gaat het mis omdat wxString slecht gedefinieerd is.

Om verder te kunnen zou ik C++ moeten leren, en ik besteed die
moeite liever aan het leren van Ruby.  De maker van deze source
(Ron Lee van Debian, ook actief op wxWidgets) zal hopelijk wel
antwoorden op beter gestelde vragen van mij.  Iemand van de
lijst met wxwidget-ervaring die mee wil spitten in dit twijfelachtige
bouwwerk van Ron Lee?

>> We zijn dus nog niet aan het link-proces toe, want make houdt al op voor
>> de compilatie is afgerond. Er is dus geen sprake van een "versie van
>> 'gib' die
>> niet compatible is met de laatste versie van wx-widgets".  Om te zien of dat
>> een probleem zou zijn moet op zijn minst de compilatie foutloos worden
>> afgerond.  Wèl worden de headers uit wx-widgets goed gevonden, zoals je
>> in de foutmeldingen hierboven kunt lezen, zoals op de 6° en 7° regel:
> Het probleem moet inderdaad gezocht worden in de code die u hier
> probeert te compileren en wx-widgets. De foutmeldingen suggeren
> incompatibiliteit met de preciese definitie van het data type wxString.
>
>> Later vandaag (of zo snel ik eraan toekom, want heb heel nare
>> dingen aan mijn hoofd) zal ik dit op mijn website zetten, mochten
>> mensen van de lijst mee willen kijken hoe dit gecompileerd te krijgen.
>> Het zou toch moeten kunnen: file uitpakken en make uitvoeren.
>> Wie, oh wie zegt mij hoe? .................
> - source downloaden
> - source uitpakken
> - source compileren
> - bugs fiksen
> - verbeterde source compileren (zonodig vorige stap herhalen)
> - uitvoerbaar programma installeren
> - programma testen
> - verbeterde versie naar de auteur sturen
>
>>> Misschien dat ik het komende weekeinde wat tijd over houd om daarin
>>> te duiken (als je alle info toestuurt).
> 'make' zal er na de eerste fout mee ophouden. Dus is het moeilijk in
> te schatten hoelang het gaat kosten om alles te fiksen.
>
>>> IJskoude groeten,
>>>
>>>
>>> Daniel von Asmuth
>>>
>> Hoop dat mijn warme dank je een beetje ontdooit  ;-)
>> Julien
> Limburg is geen schaatsvolk zoals Friesland.
>
>
>
> Daniel.
>
Maar wanneer je de heuvel af kunt schaatsen gaat het lekker
snel ;-)


-- 
Julien Michielsen
julien_at_michkloo.xs4all.nl





More information about the Linux mailing list