linker probléma

szavazat
2

Van egy probléma a kapcsoló, ha építem aktuális projekt.

A hiba akkor jön fel a következő:

libmiinddynamic.so: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& SparseImplementationLib::operator<< <double, double, SparseImplementationLib::DefaultPtr<double, double> >(std::basic_ostream<char, std::char_traits<char> >&, SparseImplementationLib::AbstractSparseNode<double, double, SparseImplementationLib::DefaultPtr<double, double> > const&)'

Ez kissé furcsa, hiszen amennyire én tudom, ez a módszer nem nyilvánítottak egy fájlt, ami határozottan állítja össze:


namespace SparseImplementationLib {
        template <ActivityType,WeightType,ptr_type = 
DefaultPtr<ActivityType,WeightType> > class AbstractSparseNode;
    // A whole bunch of other methods

//! All derived classes from AbstractSparseNode can use operator<<
template <class ActivityType, class WeightType, class ptr_type>
ostream& operator<<
(
    ostream& s, 
    const AbstractSparseNode<ActivityType,WeightType>& node)
{
    node.ToStream(s);
    return s;
}

}

Tudja valaki, hogy miért ezt a hibát is felbukkan?

NB Ezt felhasználásával összeállított MPICXX Fedora, és én vagyok a CCMAKE.

Cheers, Ed

EDIT Ok felhasználásával nm amit találtam a következőket:

std::ostream& SparseImplementationLib::operator<< <double, double, SparseImplementationLib::DefaultPtr<double, double> >(std::ostream&, SparseImplementationLib::AbstractSparseNode<double, double, SparseImplementationLib::DefaultPtr<double, double> > const&)

ha azt akarja ezt helyette:

std::basic_ostream >& SparseImplementationLib::operator<< <double, double, SparseImplementationLib::DefaultPtr<double, double> >(std::basic_ostream >&, SparseImplementationLib::AbstractSparseNode<double, double, SparseImplementationLib::DefaultPtr<double, double> > const&)
Sajnos fogalmam sincs, hogyan erősít ez, ke üzemben << mindössze 2 érveket.

Bárki nézegetni?

(A véletlenszerű \ s mielőtt az összes _s hogy megpróbálja menekülni őket, StackOverflow van, hogy egy kicsit temperamentumos ma és nem fog meg (egyébként jutunk szép dőlt véletlenszerűen kódomat))

A kérdést 12/03/2009 16:31
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
1

tudja nm objektum, amely generálja a fent látható kódot, látni, hogy az aláírás valóban, amit elvár.

Válaszolt 12/03/2009 16:59
a forrás felhasználó

szavazat
0

Megpróbálom elemezni (formáz), hogy a vonal, így tudok olvasni ...

libmiinddynamic.so: undefined reference to:
ostream & SparseImplementationLib::operator<<
   < double, double, SparseImplementationLib::DefaultPtr<double, double> >
(
   ostream &,
  SparseImplementationLib::AbstractSparseNode<
     double, double, SparseImplementationLib::DefaultPtr<double, double> > const
)

Ha azt olvastam, hogy jobb, akkor:

  • osztály ActivityType egy dupla .
  • osztály WeightType egy dupla .
  • osztály ptr_type egy SparseImplementationLib :: DefaultPtr <dupla, dupla>

És valahogy a második érvet
const AbstractSparseNode <ActivityType, WeightType> & ,
pl const AbstractSparseNode <dupla, dupla> &
vált:

  SparseImplementationLib::AbstractSparseNode<
     double,
     double,
     SparseImplementationLib::DefaultPtr<double, double>
       > const &

A sablon érv száma nem egyezik meg. Már meg a második (sablonra) argumentum 2 sablonra paraméterek és az a hibaüzenet azt jelzi 3 sablonalapú paramétereket.

Válaszolt 12/03/2009 17:46
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more