Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: WildBoar 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
-
Píše ti to, že překladač nenašel hlavičkový soubor gtkmm.h
Ty ho vkládáš takto:
#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:
#include <gtk/gtkmm.h>
-
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í
#include "<gtkmm-2.4/gtkmm.h>"
opět dostávám chybu
$ 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:
#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:
#include <gtk/gtkmm.h>
-
#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.
-
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/ !
-
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.
-
Jo jo stane se...
todle se taky super hledá
if (bExists);
{
....
}
else
{
return bExists;
}
Jeden středník u if a jakou to nadělá paseku ;D
Btw. takže už to jede?
-
Jede, díky.
BTW kdysi jsem viděl jsem pár povedených chyb, jako např.:
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á
if (bExists);
{
....
}
else
{
return bExists;
}
Jeden středník u if a jakou to nadělá paseku ;D
Btw. takže už to jede?