Portál AbcLinuxu, 12. května 2025 04:15

Dotaz: invalid conversion from ‘int’ to ‘void*’

21.9.2008 10:46 PetrHL | skóre: 17 | blog: petr_h | Neratovice
invalid conversion from ‘int’ to ‘void*’
Přečteno: 483×
Odpovědět | Admin
Dobry den,

mam tu openSuse 11.0 a snazim se zkompilovat program TrustedQSL. Na strance http://packages.qa.debian.org/t/trustedqsl.html jsem stahl originalni zdrojaky a patch, ktery jsem na zdrojaky aplikoval. Program pouziva knihovny wxWindows. V Debianu je verze 2.6. V novem openSuse je verze 2.8. Kompilace spadne s chybou:

make[1]: Entering directory `/home/ok2cqr/tmp/TrustedQSL-1.11' if g++ -DHAVE_CONFIG_H -I. -I. -I. -Wall `"/usr/bin/wx-config" --cxxflags` -I/usr/include -I/usr/include -I/usr/include -g -O2 -MT tqsl.o -MD -MP -MF ".deps/tqsl.Tpo" -c -o tqsl.o tqsl.cpp; \ then mv -f ".deps/tqsl.Tpo" ".deps/tqsl.Po"; else rm -f ".deps/tqsl.Tpo"; exit 1; fi
In file included from tqslwiz.h:31, from tqsl.cpp:40:
certtree.h: In member function ‘CertTreeItemData* CertTree::GetItemData(int)’:
certtree.h:51: error: invalid conversion from ‘int’ to ‘void*’
certtree.h:51: error: initializing argument 1 of ‘wxTreeItemId::wxTreeItemId(void*)’

radek 51 v certtree.h je:

CertTreeItemData *GetItemData(int id) { return (CertTreeItemData *)wxTreeCtrl::GetItemData(id); }

Moje znalost C a C++ je velmi spatna. Vim co ta chyba znamena, ale vubec netusim jak to v tom zdrojaku opravit. Muzete mi prosim poradit?

Dekuji za pripadnou pomoc.

Petr
"Do, or do not. There is no 'try.'" -- Jedi Master Yoda | CQRLOG | CQRPROP | HamQTH | Domů

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.9.2008 12:32 luky
Rozbalit Rozbalit vše Re: invalid conversion from ‘int’ to ‘void*’
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jednak nevim, jestli vam debiani patche na opensuse nejak pomohou, a pak je potreba wxWidgets kompatibilni s verzi 2.4, coz asi vase verze neni. Nicmene i 2.8 porad ma volby pro kompilaci kompatibilni s 2.4, tak si muzete udelat vlastni build (ale mozna by bylo lepsi zkusit primo 2.4 misto kompatibility ve vyssich verzich) a proti nemu pak kompilovat TrustedQSL.
21.9.2008 12:46 PetrHL | skóre: 17 | blog: petr_h | Neratovice
Rozbalit Rozbalit vše Re: invalid conversion from ‘int’ to ‘void*’
Ja bych to prave potreboval zkompilovat s novou verzi 2.8. Pak vytvorim rpm balicek pro openSuse, ktery si pak budou nainstalovat ostatni uzivalate TrustedQSL. Nekteri tezko zvladnou kompilaci proti verzi 2.4 :-(.

Petr
"Do, or do not. There is no 'try.'" -- Jedi Master Yoda | CQRLOG | CQRPROP | HamQTH | Domů
Fuky avatar 21.9.2008 13:52 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: invalid conversion from ‘int’ to ‘void*’

V případě, že to chceš kompilovat s novou verzí knihovny, tak se připrav na to, že tohle může být pouze jedna z mnoha změn ve verzi 2.8 oproti 2.4 a Ty je všechny budeš muset opravovat...

Nebylo by lepší rovnou k TrustedQSL přikompilovat verzi 2.4, binárka bude sice trochu větší, ale nebudeš muset vytvářet patch, pro verzi 2.8.

21.9.2008 19:11 PetrHL | skóre: 17 | blog: petr_h | Neratovice
Rozbalit Rozbalit vše Re: invalid conversion from ‘int’ to ‘void*’
To by bylo skvele reseni ale bohuzel nevim jak na to.

Uz jsem se nejak prokousal upravami pro verzi 2.8. Program chodi dokud nenaimportuji certifikat. Po naimportovani program zmrzne. Mrzne i pri startu s naimportovanym certifikatem. Takze asi budu muset zkoumat. Ale zkompilovat to staticky by bylo take reseni. Je tam sice vice zavislosti ale staticky by to bylo nejlepsi. Jak to udelat?

Diky za rady.

Petr
"Do, or do not. There is no 'try.'" -- Jedi Master Yoda | CQRLOG | CQRPROP | HamQTH | Domů
22.9.2008 08:34 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: invalid conversion from ‘int’ to ‘void*’
Odpovědět | | Sbalit | Link | Blokovat | Admin
Podľa dokumentácie je wxTreeCtrl::GetItemData deklarované ako
wxTreeItemData* GetItemData(const wxTreeItemId& item) const
Tipujem, že sa kompilátor sťažuje na to, že miesto

const wxTreeItemId& item

sa tam posiela

int id

Je otázne ako to riešiť. Môžeš to skúsiť pretypovať

...wxTreeCtrl::GetItemData((wxTreeItemId)id);

Môžeš skúsiť pátrať po tom, či TrustedQSL má fungovať s tou verzou wxWidgets, ktorú máš (a teda či platí tá deklarácia, ktorá je v tej dokumentácii). Alebo môžeš skúsiť nechať to prejsť pre-processorom a pozrieť čo tam vlastne má byť:
g++ -DHAVE_CONFIG_H -I. -I. -I. -Wall `"/usr/bin/wx-config" --cxxflags` -I/usr/include -I/usr/include -I/usr/include -E -MT tqsl.o -MD -MP -MF ".deps/tqsl.Tpo" -c -o tsql.txt tqsl.cpp
- a potom pozrieť do tsql.txt a nájsť ako vlastne vyzerá tá definícia GetItemData v CertTree a ako vyzerá GetItemData vo wxTreeCtrl.
Luboš Doležel (Doli) avatar 22.9.2008 13:13 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: invalid conversion from ‘int’ to ‘void*’
Jenže tady nejde o funkci GetItemData, ale o konstruktor wxTreeItemId :-)
Řešení 1× (PetrHL (tazatel))
22.9.2008 13:37 PetrHL | skóre: 17 | blog: petr_h | Neratovice
Rozbalit Rozbalit vše Re: invalid conversion from ‘int’ to ‘void*’
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vyřešeno. Pomohl mi s tím na #wxWidgets David Hart. TrustedQSL lze zkompilovat a chodí. Problémů tam bylo několik ale tento byl asi nejhorší.
Opravená řádka vypadá takto:

CertTreeItemData *GetItemData(wxTreeItemId id) { return (CertTreeItemData *)wxTreeCtrl::GetItemData(id); }

Díky všem za rady a trpělivost.

Petr
"Do, or do not. There is no 'try.'" -- Jedi Master Yoda | CQRLOG | CQRPROP | HamQTH | Domů

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.