abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

dnes 10:33 | Komunita

V pondělí měl na YouTube online premiéru otevřený krátký 2D film Hero vytvořený v 3D softwaru Blender. Cílem stejnojmenného projektu Hero je vylepšit nástroj Grease Pencil (tužka) v Blenderu 2.8.

Ladislav Hagara | Komentářů: 2
včera 23:22 | Nová verze

Byla vydána verze 4.0 kolekce svobodného softwaru umožňujícího nahrávání, konverzi a streamovaní digitálního zvuku a obrazu FFmpeg (Wikipedie). Přehled novinek v Changelogu (GitHub).

Ladislav Hagara | Komentářů: 0
včera 17:22 | Komunita

Včera vydanou hru Rise of the Tomb Raider pro Linux lze do pondělí 23. dubna koupit na Steamu s 67% slevou. Místo 49,99 € za 16,49 €.

Ladislav Hagara | Komentářů: 0
včera 16:11 | Komunita

Na Humble Bundle lze získat počítačovou hru Satellite Reign (Wikipedie, YouTube) běžící také v Linuxu zdarma. Speciální akce končí v sobotu v 19:00.

Ladislav Hagara | Komentářů: 1
včera 15:44 | Zajímavý software

Společnost Apple koupila před třemi lety společnost FoundationDB vyvíjející stejnojmenný NoSQL databázový systém FoundationDB (Wikipedie). Včera byl tento systém uvolněn jako open source pod licencí Apache 2.0. Zdrojové kódy jsou k dispozici na GitHubu.

Ladislav Hagara | Komentářů: 0
včera 15:00 | Nová verze

Po dva a půl roce od vydání verze 5.7 oznámila společnost Oracle vydání nové major verze 8.0 (8.0.11) databázového systému MySQL (Wikipedie). Přehled novinek v poznámkách k vydání. Zdrojové kódy komunitní verze MySQL jsou k dispozici na GitHubu.

Ladislav Hagara | Komentářů: 2
19.4. 14:44 | Pozvánky

Spolek OpenAlt zve příznivce otevřených technologií a otevřeného přístupu na 151. brněnský sraz, který proběhne v pátek 20. 4. od 18:00 hodin v restauraci Benjamin na Drobného 46.

Ladislav Hagara | Komentářů: 0
19.4. 13:33 | Nová verze

Byla vydána verze 18.04.0 KDE Aplikací (KDE Applications). Přehled novinek v kompletním seznamu změn a na stránce s dalšími informacemi.

Ladislav Hagara | Komentářů: 0
19.4. 13:11 | Nová verze

Bylo oznámeno vydání nové stabilní verze 1.26 a beta verze 1.27 open source textového editoru Atom (Wikipedie). Přehled novinek i s náhledy v příspěvku na blogu. Podrobnosti v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
19.4. 12:55 | Komunita

Dle plánu byla dnes vydána hra Rise of the Tomb Raider (Wikipedie) pro Linux. Koupit ji lze za 49,99 €.

Ladislav Hagara | Komentářů: 3
Používáte na serverech port knocking?
 (3%)
 (7%)
 (46%)
 (26%)
 (17%)
Celkem 336 hlasů
 Komentářů: 29, poslední 5.4. 12:25
    Rozcestník

    Dotaz: Překlad jako C funguje, jako C++ ne.

    Beda0 avatar 30.12.2009 22:22 Beda0 | skóre: 28
    Překlad jako C funguje, jako C++ ne.
    Přečteno: 330×
    Zdravím, mám soubor
    
    #include "libmyxml.h"
    #include <stdio.h>
    
    int main(void) {
    
        int ret;
    	Data Str;
    	const char *uriRead = "prikladoveXML/1.xml";
    
    	  ret = DataReader(uriRead,&Str);
    	  if(ret==0)  printf("Cteni_souboru_probehlo_bez_chyb\n");
    	  else  printf("Behem_cteni_souboru_se_vyskytly_chyby\n");
    
    	return 0;
    }
    Má to načítat data z xml souborů. Funkce DataReader je v mojí knihovně libmyxml.a. V libmyml.h je definováná struktura Data. A teď k problému.
    Když se soubor jmenuje main.c a přeložím ho gcc -c main.c tak se mi normálně vytvoří main.o. Když ale soubor přejmenuju main.cpp a přeložím gcc -c main.cpp vyhodí to hlášku:
    main.cpp: In function ‘int main()’:
    main.cpp:10: error: ‘DataReader’ was not declared in this scope
    
    Neměl by tohle řešit přepínač -c?
    Můžete mi prosím někdo vysvětlit, proč to v C++ nefunguje? Nebo aspoň nasměrovat správným směrem? Díky.

    Řešení dotazu:


    Odpovědi

    30.12.2009 22:40 Sinuhet | skóre: 31
    Rozbalit Rozbalit vše Re: Překlad jako C funguje, jako C++ ne.

    Co mate v souboru libmyxml.h?

    Prepinac -c zajisti, ze se nebude linkovat, gcc skonci praci vytvorenim objektoveho souboru. Vas problem urcite nevyresi.

    Beda0 avatar 30.12.2009 22:47 Beda0 | skóre: 28
    Rozbalit Rozbalit vše Re: Překlad jako C funguje, jako C++ ne.
    V libmyxml.h je jen definice struktury Data.

    Co mate v souboru libmyxml.h?

    Prepinac -c zajisti, ze se nebude linkovat, gcc skonci praci vytvorenim objektoveho souboru.

    O to se právě snažím, vytvořit soubor main.o s použítím C++ - tedy když soubor přejmenuju na main.cpp nebo použiju g++.
    Výsledný program potom vytvářím dál pomocí gcc main.o -o ukazka -I. -I/usr/include/libxml2 -L. -lz -lm -lxml2 -lmyxml
    Problém je, že v C++ se mi nedaří vytvořit soubor main.o a skončí to tou chybou.
    Beda0 avatar 30.12.2009 22:51 Beda0 | skóre: 28
    Rozbalit Rozbalit vše Re: Překlad jako C funguje, jako C++ ne.
    Tohle je jen ta nejzákladnější část, která se mi nedaří. Snažím se použít mojí knihovnu v qtcreatoru a nedaří se mi, proto jsem se snažil najít příčinu a dostal jsem se k tomuhle problému.
    Beda0 avatar 30.12.2009 23:00 Beda0 | skóre: 28
    Rozbalit Rozbalit vše Re: Překlad jako C funguje, jako C++ ne.
    Už mi to trochu dochází, moje knihovna libmyxml.a je psaná v C a pokouším se ji použít v C++ programu, což by mělo při dodržení určitých pravidel jít, nebo ne? Ale proč selže kompilace main.o, kde se libmyxml.a ještě vůbec nepoužila?
    30.12.2009 23:20 Sinuhet | skóre: 31
    Rozbalit Rozbalit vše Re: Překlad jako C funguje, jako C++ ne.

    Dokud sem nedate kompletni kod, ktery nejde zkompilovat, tak se to tezko dozvite. Napriklad tohle se prelozi:

    #include <stdio.h>
    
    struct Data
    {
            int dummy;
    };
    
    int DataReader(const char*, Data*);
    
    int main(void) {
    
            int ret;
            Data Str;
            const char *uriRead = "prikladoveXML/1.xml";
    
            ret = DataReader(uriRead,&Str);
            if(ret==0)  printf("Cteni_souboru_probehlo_bez_chyb\n");
            else  printf("Behem_cteni_souboru_se_vyskytly_chyby\n");
    
            return 0;
    }
    Beda0 avatar 30.12.2009 23:34 Beda0 | skóre: 28
    Rozbalit Rozbalit vše Re: Překlad jako C funguje, jako C++ ne.
    Díky moc. Problém byl v řádku
    int DataReader(const char*, Data*);

    který v hlavičkovém souboru nebyl a při kompilaci jako C to nevadilo, ale C++ to vadilo.
    31.12.2009 03:12 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Překlad jako C funguje, jako C++ ne.
    Poučení pro příště: překládat s -Wall

    Založit nové vláknoNahoru

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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.