Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Překlad g++ s gtkmm.h končí chybou [vyřešeno]  (Přečteno 1681 krát)

WildBoar

  • Návštěvník
  • Příspěvků: 9
Překlad g++ s gtkmm.h končí chybou [vyřešeno]
« kdy: 24 Ledna 2010, 10:00:01 »
Dobrý den,

    chtěl jsem si vyzkoušet programování v C++ s gtkmm. Zkusil jsem vzít následující kód:

#include <gtkmm.h>
 
int main(int argc, char *argv[])
{
    Gtk::Main kit(argc, argv);
    Gtk::Window window;
    Gtk::Main::run(window);
    return 0;
}

Nic zvláštního. Zkopíroval jsem jen to, co jsem našel jako první zkušební kód a zkusil přeložit:

$ g++ gtktest.cc -o gtktest `pkg-config --cflags gtkmm-2.4` `pkg-config --libs gtkmm-2.4`

Dostal jsem však chybovou hlášku:

gtktest.cc:1:19: error: gtkmm.h: No such file or directory
gtktest.cpp: In function `int main(int, char**)':
gtktest.cpp:5: error: `Gtk' has not been declared
gtktest.cpp:5: error: expected `;' before `kit'
gtktest.cc:1:19: error: gtkmm.h: No such file or directory
gtktest.cpp: In function `int main(int, char**)':
gtktest.cpp:5: error: `Gtk' has not been declared
gtktest.cpp:5: error: expected `;' before `kit'
gtktest.cpp:6: error: `Gtk' has not been declared
gtktest.cpp:6: error: expected `;' before `window'
gtktest.cpp:7: error: `Gtk' has not been declared
gtktest.cpp:7: error: `window' was not declared in this scope
gtktest.cpp:6: error: `Gtk' has not been declared
gtktest.cpp:6: error: expected `;' before `window'
gtktest.cpp:7: error: `Gtk' has not been declared
gtktest.cpp:7: error: `window' was not declared in this scope

Balík libgtkmm-2.4-dev mám samozřejmě nainstalován. Neví někdo, kde by mohl být ještě problém?

    Děkuji za jakoukoliv radu

        PK
« Poslední změna: 24 Ledna 2010, 12:55:38 od Martin - ViPEr*CZ* »

Martin - ViPEr*CZ*

Re: Překlad g++ s gtkmm.h končí chybou
« Odpověď #1 kdy: 24 Ledna 2010, 10:46:12 »
Píše ti to, že překladač nenašel hlavičkový soubor gtkmm.h
Ty ho vkládáš takto:

Kód: [Vybrat]
#include <gtkmm.h>
Překladač to bere tak, že soubor by se měl nacházet v /usr/include a on tam zřejmě není. Zkus tu hlavičku najít někde v adresáři /usr/include
Pokud bude například v /usr/include/gtk/ jednoduše změníte:

Kód: [Vybrat]
#include <gtk/gtkmm.h>
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

WildBoar

  • Návštěvník
  • Příspěvků: 9
Re: Překlad g++ s gtkmm.h končí chybou
« Odpověď #2 kdy: 24 Ledna 2010, 11:54:17 »
Tak bohužel to nebylo tím. gtkmm.h mám v /usr/include/gtkmm-2.4/. Je to má chyba, že jsem zapomněl na gtkmm-2.4 v cestě k tomu hlavičkovému souboru, ale i tak dostávám stejnou chybu i po doplnění
Kód: [Vybrat]
#include "<gtkmm-2.4/gtkmm.h>"
opět dostávám chybu

Kód: [Vybrat]
$ g++ gtktest.cc -o gtktest `pkg-config --cflags gtkmm-2.4` `pkg-config --libs gtkmm-2.4`
gtktest.cc:1:31: error: <gtkmm-2.4/gtkmm.h>: No such file or directory
gtktest.cc: In function ‘int main(int, char**)’:
gtktest.cc:5: error: ‘Gtk’ has not been declared
gtktest.cc:5: error: expected ‘;’ before ‘kit’
gtktest.cc:7: error: ‘Gtk’ has not been declared
gtktest.cc:7: error: expected ‘;’ before ‘window’
gtktest.cc:9: error: ‘Gtk’ has not been declared
gtktest.cc:9: error: ‘window’ was not declared in this scope

Píše ti to, že překladač nenašel hlavičkový soubor gtkmm.h
Ty ho vkládáš takto:

Kód: [Vybrat]
#include <gtkmm.h>
Překladač to bere tak, že soubor by se měl nacházet v /usr/include a on tam zřejmě není. Zkus tu hlavičku najít někde v adresáři /usr/include
Pokud bude například v /usr/include/gtk/ jednoduše změníte:

Kód: [Vybrat]
#include <gtk/gtkmm.h>

mka

  • Závislák
  • ***
  • Příspěvků: 1907
  • Chybovat je moje.
    • Příložany Cé Zet
Re: Překlad g++ s gtkmm.h končí chybou
« Odpověď #3 kdy: 24 Ledna 2010, 12:06:20 »
#include "<gtkmm-2.4/gtkmm.h>"

gtktest.cc:1:31: error: <gtkmm-2.4/gtkmm.h>: No such file or directory

Nemůžeš používat zároveň " a <>. Resp. můžeš, ale pak se nemůžeš divit.
« Poslední změna: 24 Ledna 2010, 12:08:59 od mka »

Martin - ViPEr*CZ*

Re: Překlad g++ s gtkmm.h končí chybou
« Odpověď #4 kdy: 24 Ledna 2010, 12:10:09 »
Joj tak toho jsem si vůbec nevšiml co tam dotyčný doplnil....grrrr

Pokud použijete "" daná hlavička se musí nacházet ve složce, kde se nachází zdrojový překládaný kód!
Pokud použijete <> daná hlavička se nachází v systémové proměnné která začíná adresou /usr/include/ !
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

WildBoar

  • Návštěvník
  • Příspěvků: 9
Re: Překlad g++ s gtkmm.h končí chybou
« Odpověď #5 kdy: 24 Ledna 2010, 12:18:28 »
Sorry, jsem ... Hrál jsem si s tím pozdě v noci, a už mi to nemyslelo. Te|d na to koukám, že je to naprostá blbost a nechápu, jak jsem to tam mohl dát. :-\

Díky

#include "<gtkmm-2.4/gtkmm.h>"

gtktest.cc:1:31: error: <gtkmm-2.4/gtkmm.h>: No such file or directory

Nemůžeš používat zároveň " a <>. Resp. můžeš, ale pak se nemůžeš divit.

Martin - ViPEr*CZ*

Re: Překlad g++ s gtkmm.h končí chybou
« Odpověď #6 kdy: 24 Ledna 2010, 12:21:21 »
Jo jo stane se...

todle se taky super hledá

Kód: [Vybrat]
if (bExists);
{
   ....
}
else
{
    return bExists;
}

Jeden středník u if a jakou to nadělá paseku  ;D

Btw. takže už to jede?
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

WildBoar

  • Návštěvník
  • Příspěvků: 9
Re: Překlad g++ s gtkmm.h končí chybou
« Odpověď #7 kdy: 24 Ledna 2010, 12:39:57 »
Jede, díky.

BTW kdysi jsem viděl jsem pár povedených chyb, jako např.:
Kód: [Vybrat]
while(c=getchar()!=EOF){
...
}
Také není hned vidět, že tam chybí závorky a místo toho, aby do prom. c načetl přečtený znak ze vstupu a porovnal jej s hodnotou EOF, vyhodnotí nejdříve pravou stranu a přiřadí do proměnné c.

PK

Jo jo stane se...

todle se taky super hledá

Kód: [Vybrat]
if (bExists);
{
   ....
}
else
{
    return bExists;
}

Jeden středník u if a jakou to nadělá paseku  ;D

Btw. takže už to jede?


 

Provoz zaštiťuje spolek OpenAlt.