Stiamo ricevendo strani simboli non risolti che collegano gli errori da quando abbiamo aggiornato l'aggiornamento di Visual Studio 2015 3. Qualcun altro ha riscontrato lo stesso tipo di problemi?Simboli esterni non risolti dall'aggiornamento 3 di Visual Studio 2015: errore di collegamento boost python se il distruttore è virtuale
Ciò che è veramente strano è che boost :: get_pointer è un metodo di template, definito in un'intestazione di boost. Non capisco come si possa ottenere un simbolo esterno non definito in quel caso :(
Ecco un riproduttore, con boost 1,61 e Python 3.5.1:.
#include <vector>
#include <boost/python.hpp>
using namespace boost::python;
class Canard {
public:
Canard() {}
virtual ~Canard() {}
};
BOOST_PYTHON_MODULE(coin)
{
register_ptr_to_python< std::shared_ptr<Canard> >();
}
E l'errore:
Severity Code Description Project File Line
Error LNK2019 unresolved external symbol "class Canard const volatile * __cdecl boost::get_pointer<class Canard const volatile >(class Canard const volatile *)" ([email protected][email protected]@@[email protected]@[email protected]@[email protected]@Z) referenced in function "private: static struct _typeobject * __cdecl boost::python::objects::make_ptr_instance<class Canard,struct boost::python::objects::pointer_holder<class std::shared_ptr<class Canard>,class Canard> >::get_derived_class_object<class Canard>(struct boost::mpl::bool_<1>,class Canard const volatile *)" ([email protected]@@@[email protected]@@[email protected][email protected]@@@[email protected]@[email protected]@@[email protected]@[email protected]@@[email protected]@[email protected]@[email protected]@[email protected][email protected][email protected]@[email protected]@@Z) CCMasterKernelPyPy C:\work\dev\builds\internal\Master\SDK\MasterKernelPyPy\main.obj 1
Ma appena tolgo il virtuale davanti al distruttore della classe Canard, poi comincia a lavorare .... qualcuno ha un indizio? si tratta di un bug di Visual Studio?
Funziona! Grazie per i link e la soluzione! – CanardMoussant
Un [bug] (https://connect.microsoft.com/VisualStudio/Feedback/Details/2852624) è stato archiviato per questo problema nel bug tracker di Visual Studio ed elenca una soluzione simile a quella suggerita da Ohad. Si consiglia di tenere traccia dello stato e dei commenti del bug nel caso in cui venga aggiunta una correzione del compilatore nel prossimo aggiornamento a Visual Studio. – TaylorP
Grazie per la soluzione. Non potrei farlo funzionare per le classi astratte quando c'è un include a 'boost/optional.hpp' perché il sovraccarico di' get_pointer' tenta in qualche modo di istanziare 'boost :: opzionale'. Conosci altre soluzioni alternative per questo caso? –