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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 1
dnes 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 0
dnes 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 1
dnes 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 0
dnes 00:10 | Nová verze

Byla vydána verze 3.2 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata. Z novinek lze zmínit například podporu protokolů DNP3 a CIP/ENIP, vylepšenou podporu TLS a samozřejmě také aktualizovanou dokumentaci.

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

Byla vydána beta verze Linux Mintu 18.1 s kódovým jménem Serena. Na blogu Linux Mintu jsou hned dvě oznámení. První o vydání Linux Mintu s prostředím MATE a druhé o vydání Linux Mintu s prostředím Cinnamon. Stejným způsobem jsou rozděleny také poznámky k vydání (MATE, Cinnamon) a přehled novinek s náhledy (MATE, Cinnamon). Linux Mint 18.1 bude podporován až do roku 2021.

Ladislav Hagara | Komentářů: 0
včera 16:42 | Nová verze

Byl vydán Devuan Jessie 1.0 Beta 2. Jedná se o druhou beta verzi forku Debianu bez systemd představeného v listopadu 2014 (zprávička). První beta verze byla vydána v dubnu letošního roku (zprávička). Jedna z posledních přednášek věnovaných Devuanu proběhla v listopadu na konferenci FSCONS 2016 (YouTube, pdf).

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

Na GOG.com začal zimní výprodej. Řada zlevněných her běží oficiálně také na Linuxu. Hru Neverwinter Nights Diamond lze dva dny získat zdarma. Hra dle stránek GOG.com na Linuxu neběží. Pomocí návodu ji lze ale rozběhnout také na Linuxu [Gaming On Linux].

Ladislav Hagara | Komentářů: 1
včera 13:14 | Bezpečnostní upozornění

Byla vydána verze 2.7.1 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Řešeno je několik bezpečnostních problémů. Aktualizován byl především Tor Browser na verzi 6.0.7. Tor Browser je postaven na Firefoxu ESR (Extended Support Release) a právě ve Firefoxu byla nalezena a opravena vážná bezpečnostní chyba MFSA 2016-92 (CVE-2016-9079, Firefox SVG Animation

… více »
Ladislav Hagara | Komentářů: 0
30.11. 19:19 | Nová verze

Příspěvek na blogu nadace Raspberry Pi je věnován bezpečnostním vylepšením v nejnovější verzi Raspbianu s desktopovým prostředím PIXEL. V oficiálních obrazech je nově zakázán SSH přístup. Ten lze samozřejmě povolit po zavedení Raspbianu pomocí nástroje raspi-config. Nemá-li uživatel k Raspberry Pi připojený terminál, může SSH přístup povolit vytvořením souboru ssh v adresáři /boot. Raspbian nově upozorňuje uživatele na bezpečnostní riziko, je-li SSH přístup povolen a uživatel pi nemá změněno výchozí heslo.

Ladislav Hagara | Komentářů: 41
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 755 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama
Štítky: není přiřazen žádný štítek

Dotaz: C++: export template classes do shared library

stativ avatar 3.6.2009 12:16 stativ | skóre: 54 | blog: SlaNé roury
C++: export template classes do shared library
Přečteno: 327×
Ahjo, je mi to neskutečně trapné, ale tak nějak si s tím už nevím rady.

Jde o to, že se mi jaksi neexportují členské funkce jedné šablonové třídy ačkoliv jsem si dával bacha na to, aby nějaká nebyla definovaná jako statická a takové ty klasické blbinky.

V základě to vypadá takhle:

deghosting.h
namespace deghosting {
class Deghosting
{
public:
    Deghosting() { ; }
    virtual vector<FImagePtr> createWeightMasks() = 0;

    virtual void loadImages(vector<string>& newInputFiles) = 0;
    virtual void setFlags(const uint16_t newFlags) = 0;
    virtual void setIterationNum(const int newIterations) = 0;
    virtual ~Deghosting() { ; }
};

}
khan.h
namespace deghosting {

/** Mexican hat function, eq. 5 from Khan paper */
// AS FUNCTOR
template <typename InputType, typename ResultType>
class weightMexicanHatFunctor
{
public:
    weightMexicanHatFunctor() { ; }

    inline ResultType operator()(const InputType& a) const {
        return mexicanHat(a);
    }
protected:
    template <class T>
    inline ResultType mexicanHat(const T& a) const {
        typedef typename NumericTraits<T>::RealPromote RealType;
        const RealType x = NumericTraits<T>::toRealPromote(a);
        RealType t = (x/127.5 -1);
        t *= t; // ^2
        t *= t; // ^4
        t *= t; // ^8
        t *= t; // ^16
        return NumericTraits<ResultType>::fromRealPromote(1.0 - t);
    }
};

struct khanAdvModes {
    // nějaké ty enumy
};

template <class T>
class khan : public Deghosting
{
public:
    khan(vector<string>& setInputFiles, int setIter, uint16_t setFlags, uint8_t setSave, uint8_t setUI);
    void loadImages(vector<string>& newInputFiles) { inputFiles = newInputFiles; }
    void setFlags(const uint16_t newFlags) { flags = newFlags; }
    void setSaveMode(const uint8_t newSave) { save = newSave; }
    void setIterationNum(const int newIterations) { iterations = newIterations; }
    int getWidth() { return width; }
    int getHeight() { return height; }
    vector<FImagePtr> createWeightMasks();
    ~khan();
private:
// implementační krávovinky
};
}
Otázka je, proč mi to sakra po slinkování do .so knihovny nefunguje. Ostatní funkce, které jsou samostatně definováni v namespace deghosting ale podle nm exportovány jsou.

Kompletní zdrojáky jsou ke stažení ze svn: https://hugin.svn.sourceforge.net/svnroot/hugin/hugin/branches/gsoc2009_deghosting/
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk

Odpovědi

3.6.2009 13:10 volca
Rozbalit Rozbalit vše Re: C++: export template classes do shared library
Sablonove funkce by se exportovaly jen ve forme konkretizaci te sablony, ne? Obecna sablona zustava v hlavickovem souboru a do knihovny se nekompiluje - neni co kompilovat.
3.6.2009 13:17 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
Rozbalit Rozbalit vše Re: C++: export template classes do shared library
Presne tak. Sablona se vytvari v momente kdy ji pouzijes. Do te doby jde jenom o predpis podle ktere se vytvori. Pokud chces mit nejake predkompilovane implementace (a treba nezverejnovat obecnou implementaci) musis je rucne instanciovat.
Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
stativ avatar 3.6.2009 14:51 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: C++: export template classes do shared library
Díky, to je celkem logické. Pořád mi to ale nefunguje i když to upravím tak, že zdrojáky šoupnu do adresáře se zdrojáky utility (kdyby to někoho zajímalo, je to v src/deghosting a ony šablony, které tu řeším jsou v src/hugin_base/algorithms/deghosting), která je má používat a CMakeLists upravím na
add_executable(hugin_hdrmerge hugin_hdrmerge.cpp jbu.cpp khan.cpp support.cpp)
target_link_libraries(hugin_hdrmerge ${common_libs} ${image_libs})
Tady by snad neměly být žádné problémy, ale opět skončím s chybou:
/home/lukas/development/gsoc2009_deghosting/src/deghosting/hugin_hdrmerge.cpp:396: undefined reference to `deghosting::khan<deghosting::weightMexicanHatFunctor<int, float> >::khan(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, int, unsigned short, unsigned char, unsigned char)'
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
3.6.2009 14:54 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
Rozbalit Rozbalit vše Re: C++: export template classes do shared library
Kde mas obecnou implementaci toho khan? Pokud v .cpp tak to je presne to co jsem popsal.
Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
stativ avatar 3.6.2009 15:56 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: C++: export template classes do shared library
Jo, mam ji v .cpp. Ale když v tom hugin_hdrmerge použiju khan<weightMexicanHatFunctor<int,float> > deghoster(inputFiles, num_iters, adv, save, ui); tak by snad mělo ke konkretizaci té šablony dojít, ne? Problém je, že nejsem moc zběhlý v používání šablon tříd.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
stativ avatar 3.6.2009 16:08 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: C++: export template classes do shared library
Jo už mi to docvaklo. Předpokládám, že když je chci mít mimo, tak musím použít export.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
stativ avatar 3.6.2009 16:15 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: C++: export template classes do shared library
A sakra: /home/lukas/development/gsoc2009_deghosting/src/hugin_base/algorithms/deghosting/khan.cpp:67: warning: keyword ‘export’ not implemented, and will be ignored

Takže to holt nacpu do hlavičkového souboru.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
3.6.2009 16:27 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
Rozbalit Rozbalit vše Re: C++: export template classes do shared library
Viz. o prispevek niz. Btw. pro samostatne funkce/metody tohle neudelas, explicitni instanciaci jde delat jenom pro cele tridy.
Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
3.6.2009 16:12 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
Rozbalit Rozbalit vše Re: C++: export template classes do shared library
Ale z ceho? Ten obecny predpis mas .cpp a to je nedostupne z toho mista kde to pouzivas, takze se ten obecny predpis nemuze vzit a podle neho vytvorit konkretni implementace.
Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
3.6.2009 16:28 Ivan
Rozbalit Rozbalit vše Re: C++: export template classes do shared library

Pokud ji mas v .cpp, tak ji prendej to souboru s priponou .tcc a ten includuj na konci headeru. Vzhledem k tomu, ze ta metoda je inline, tak by ani nemela byt v knihovne.

Ivan

 

 

stativ avatar 3.6.2009 16:57 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: C++: export template classes do shared library
Díky moc všem za otevření očí. Už mi to (skoro, ještě je tam jakási jiná chybka) funguje.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk

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.