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í
×
včera 17:35 | Bezpečnostní upozornění

Německá Bundesnetzagentur (obdoba českého ČTU) zakázala na německém území prodej panenky Cayla kvůli „špionáži“ dětí. Tato elektronická hračka obsahuje mikrofon, reproduktor a kameru a bezdrátové komunikační rozhraní, pomocí kterého se hračka připojuje na servery výrobce. Takovýmto způsobem může hračka pomocí umělé inteligence „odpovídat“ na dotazy dítěte. Hlavní problém bude ale asi někde jinde, podle prvotních zpráv může

… více »
Petr Tomášek | Komentářů: 18
17.2. 15:30 | Bezpečnostní upozornění

CSIRT.CZ upozorňuje, že bezpečnostní experti objevili nový typ malwaru, jenž cílí na open source e-commerce platformu Magento. Malware je zajímavý tím, že se jedná o první svého druhu, jehož kód zůstává skrytý v SQL databázi zasaženého e-shopu. Škodlivý kód je volán pomocí tzv. SQL trigerru, který je spouštěn při každém vytvoření objednávky v systému.

Ladislav Hagara | Komentářů: 0
17.2. 09:00 | Nová verze

Bylo vydáno Ubuntu 16.04.2 LTS, tj. druhé opravné vydání Ubuntu 16.04 LTS s kódovým názvem Xenial Xerus. Přehled novinek v poznámkách k vydání a v přehledu změn.

Ladislav Hagara | Komentářů: 37
17.2. 06:00 | Zajímavý článek

Pavel Tišnovský se v dvoudílném článku na MojeFedora.cz věnuje tvorbě pluginů (modulů) pro bitmapový grafický editor GIMP. Pomocí pluginů lze GIMP rozšiřovat o další funkce. Implementovat lze například nové filtry nebo pomocné utility pro tvorbu animací či poloautomatickou retuš snímků.

Ladislav Hagara | Komentářů: 6
16.2. 23:32 | Komunita

Do 30. března se lze přihlásit do dalšího kola programu Outreachy, jehož cílem je přitáhnout do světa svobodného a otevřeného softwaru lidi ze skupin, jež jsou ve světě svobodného a otevřeného softwaru málo zastoupeny. Za 3 měsíce práce, od 30. května do 30. srpna 2017, v participujících organizacích lze vydělat 5 500 USD. Jedná se již o 14. kolo tohoto programu.

Ladislav Hagara | Komentářů: 11
16.2. 23:13 | Nová verze

Byla vydána verze 0.92.1 svobodného multiplatformního vektorového grafického editoru Inkscape. Přehled novinek v poznámkách k vydání. Řešen je mimo jiné problém s verzí 0.92, jež rozbíjí dokumenty vytvořené v předchozích verzích Inkscape. Více v příspěvku na blogu Davida Revoye, autora open source webového komiksu Pepper&Carrot nebo portrétu GNU/Linuxu.

Ladislav Hagara | Komentářů: 0
16.2. 16:26 | Bezpečnostní upozornění

Byla vydána verze 1.1.0e kryptografické knihovny OpenSSL. Dle bezpečnostního upozornění 20170216 byla opravena závažná bezpečnostní chyba CVE-2017-3733.

Ladislav Hagara | Komentářů: 1
16.2. 13:03 | Pozvánky

GNOME hackaton proběhne v Brně na FIT VUT v Red Hat Labu (budova Q) v pondělí 20. února od 15:00. Registrace není nutná, ale pokud dáte na FaceBooku vědět, že plánujete dorazit, pomůže to s plánováním.

Ladislav Hagara | Komentářů: 0
16.2. 13:02 | Pozvánky

Únorový Prague Containers Meetup se koná 21. února v budově MSD. Můžete se těšit na přednášky o tom, proč a jak používat kontejnery a zároveň získat zajímavý pohled na historii a budoucnost kontejnerů.

little-drunk-jesus | Komentářů: 0
16.2. 08:55 | Zajímavý software

Google na svém blogu věnovaném vývojářům oznámil vydání verze 1.0 open source knihovny pro strojové učení TensorFlow (Wikipedie). Přehled novinek v poznámkách k vydání na GitHubu. Zdrojové kódy TensorFlow jsou k dispozici pod licencí Apache 2.0.

Ladislav Hagara | Komentářů: 0
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (13%)
 (2%)
 (72%)
 (3%)
 (10%)
Celkem 655 hlasů
 Komentářů: 52, poslední 13.2. 12:45
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: 330×
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.